如何处理内联汇编器中函数的引用?我正在尝试这个
void foo(int& x)
{
__asm mov x, 10
}
int main()
{
int x = 0;
foo(x);
std::cout << x << std::endl;
}
但是函数执行后 x 仍然是 0,但是这个工作正常
int x = 0;
__asm mov x, 10
std::cout << x << std::endl;
怎么解决呢?
Thanks.
引用是具有值语义的指针 - 在汇编语言中,这些语义是不相关的,因此您只剩下一个指针:
void foo(int& x)
{
__asm {
mov eax, x
mov DWORD PTR [eax], 10
}
}
(当然,YMMV 取决于编译器、版本、优化等。使用内联汇编时的所有常见内容。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)