我有一个关于在c和内联汇编之间传递参数的问题
我在将数组传递到内联程序集时遇到麻烦。我不断收到错误“错误:内存输入1无法直接寻址”
这是我的代码示例:
void main()
{
char name[] = "thisisatest";
__asm__ ("\
.intel_syntax noprefix \n\
mov eax, %[name] \n\
inc (eax) \n\
"
:/*no output*/
:[name]"m"(name)
);
}
这应该增加我字符串的第一个字母(使它成为'u'),但不会建立。
有想法吗?
万一其他人遇到这个问题,我就可以解决。
void main()
{
char name[] = "thisisatest";
__asm__ ("\
.intel_syntax noprefix \n\
lea, eax, %[name] \n\
inc BYTE PTR [eax] \n\
"
:/*no output*/
:[name]"m"(name[0])
);
}
关键是将数组的第一个元素作为内存参数传入,然后要求输入有效地址。然后,我有一个指向我的字符串的指针。希望这对其他人有帮助
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句