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;
如何解决这个问题?
谢谢。
How to deal with references in function from inline assembler? I'm trying this
void foo(int& x)
{
__asm mov x, 10
}
int main()
{
int x = 0;
foo(x);
std::cout << x << std::endl;
}
but x is still 0 after function execution, however this one works fine
int x = 0;
__asm mov x, 10
std::cout << x << std::endl;
How to solve that?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
引用是具有值语义的指针 - 在汇编语言中,这些语义是无关紧要的,因此您只剩下一个指针:(
当然,YMMV 取决于编译器、版本、优化等。使用内联汇编时的所有常见内容。 )
A reference is a pointer with value semantics - in assembly language these semantics are irrelevant, so you are left with a pointer:
(Of course, YMMV depending on the compiler, version, optimisations, etc. all the usual stuff when using inline assembly.)
引用本质上是一个指针,是值的地址,而不是值本身。例如,这有效:
输出:
Reference is essentially a pointer, an address of the value, not the value itself. So this works for example:
Output: