c - 双百分号 (%%) 在 gcc 内联汇编中有什么作用?

标签 c gcc x86

我遇到了一个看起来像这样的代码:

asm volatile (
    # [...]
    "movl $1200, %%ecx;"
    # [...]
);

我知道 movl $1200, %ecx 在 x86 中的作用。但我对为什么有两个百分号感到困惑。

最佳答案

GCC 内联汇编使用 %0、%1、%2 等来引用输入和输出操作数。这意味着您需要为实际寄存器使用两个 %%。

检查这个howto获取重要信息。

关于c - 双百分号 (%%) 在 gcc 内联汇编中有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14745631/

相关文章:

x86 - 将 SSE/AVX 寄存器左移和右移 32 位,同时移入零

c++ - 如何获得忘记算术运算的警告?

c++ - 两个补数的减法

c - 如何将一个字符分配给数组?

c++ - libstdc++新标准库特性支持表

两个具有自动存储期限的不同对象在地址比较下是否可以比较相等?

c# - 二进制搜索算法的扩展,用于查找要在数组中搜索的键值的第一个和最后一个索引

c - 基本C程式设计错误

gcc - 如果编译失败,则执行命令

c - 当IP指向0时调试指令指针