【发布时间】:2014-05-30 11:06:06
【问题描述】:
编译时出现“错误:错误的寄存器名称 '%%ecx'”
#include <stdio.h>
int main(void){
asm("mov 3, %%ecx\n\t");
// ...
return 0;
}
【问题讨论】:
-
为什么使用两个百分号?另外,
\n\t有什么原因吗?这不是 printf 格式;这些不应该是必需的。 -
什么编译器?内联汇编语法取决于编译器。
-
@Jongware 我在 Windows 64 位上使用 gcc
-
@キューゾリファイ 你绝对错了(大约%),你花的时间去尝试和观察会比你争论它花的时间少!关于
\n\t,当您没有多条指令时,这是一种无害但没有帮助的情况。
标签: c gcc inline-assembly