char greet[] = "hello mate";
__asm__("\n\
movl foo, %eax\n\
");
如何将greet[0]
移至%eax
我的猜测:
char greet[] = "hello mate";
__asm__("\n\
movl $_greet, %ebx\n\
movl (%ebx), %eax\n\
");
但是,我收到了内存错误。
答案 0 :(得分:1)
如果greet
是局部变量__asm__
,则无法自动引用它。您可能需要使用汇编程序模板:
int main () {
char greet[] = "hello mate";
__asm__(
"movzbl (%0), %%eax\n"
: : "r"(greet) : "%eax"
// ^ ^ do not touch %eax
// '- set %0 to a register storing `greet`
);
// now %eax should store 'h' (0x68).
return 0;
}