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\
");
しかし、メモリエラーが発生しています。
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\
");
しかし、メモリエラーが発生しています。
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;
}