【发布时间】:2015-06-07 20:10:11
【问题描述】:
我尝试在c 程序中使用lea rax, [rip]。我的程序如下:
...
asm volatile ("lea %%rax, %[rip]"
:);
...
但是,程序没有编译,抛出错误:undefined name operand。我的平台是 x86-64 架构上的 Ubuntu 1404(作为虚拟机)。
【问题讨论】:
-
您确定目标/源操作数的语法和顺序吗?如果您使用 gcc,请参见此处:gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html
-
你能说得更具体些吗(考虑到这里的非专家)?我已经稍微更新了 OP,关于
lea指令,我在这里关注:stackoverflow.com/questions/12397451/…。 -
我认为在 GCC 的内联汇编中, [] 或 %[] 表示您传入的命名参数。 rip 实际上是机器寄存器的名称,而不是您的参数之一的名称,所以它以这种方式提及它是没有意义的。你的意思是它是一个地址操作数吗?
标签: c assembly inline-assembly