gpt4 book ai didi

c - 如何访问asm中的数组?

转载 作者:行者123 更新时间:2023-11-30 16:02:15 24 4
gpt4 key购买 nike

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;
}

关于c - 如何访问asm中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5547820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com