C内联汇编:如何处理引用?
作者:互联网
如何处理内联汇编程序中的函数引用?我正在尝试这个
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,assembly,visual-c,reference,inline-assembly 来源: https://codeday.me/bug/20190827/1737321.html