gpt4 book ai didi

C++ 内联汇编 : how to deal with references?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:40:07 25 4
gpt4 key购买 nike

如何处理内联汇编函数中的引用?我正在尝试这个

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/

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