如何处理内联汇编函数中的引用?我正在尝试这个
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;
如何解决?
谢谢。
最佳答案
引用是一个具有值语义的指针——在汇编语言中这些语义是无关紧要的,所以你只剩下一个指针:
void foo(int& x)
{
__asm {
mov eax, x
mov DWORD PTR [eax], 10
}
}
(当然,YMMV 取决于编译器、版本、优化等。使用内联汇编时所有常见的东西。)
关于C++ 内联汇编 : how to deal with references?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4968105/