R. *_* 久蔵 0 c gcc inline-assembly
编译时我得到"错误:错误的寄存器名称'%% ecx'"
#include <stdio.h>
int main(void){
asm("mov 3, %%ecx\n\t");
// ...
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当您想要使用gcc的"扩展内联汇编",输入,输出和clobber列表时,会使用寄存器的双百分号.这是因为内联汇编程序保留了单百分号,用于替换实际操作数名称,基于这些列表和后面的数字%.
如果您不想使用"扩展"内联汇编,只需使用普通的AT&T语法.做这样的事情:
int main(void)
{
asm("mov 3, %ecx\n\t");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
与gcc 4.6.3完美搭配.我也假设你知道之间的区别mov 3, %ecx和mov $3, %ecx.
| 归档时间: |
|
| 查看次数: |
4614 次 |
| 最近记录: |