【发布时间】:2014-03-23 18:17:37
【问题描述】:
我对 x64 程序集比较陌生,我将它与 VS2010 结合使用。 我正在努力处理来自 proc 的返回值,我真的找不到适合初学者的高质量文档。
.data
MyByte db 10
.code
GetValueFromASM proc
mov rax, 28
mov rbx , 19
lea rax, MyByte
mov rax, 10
mov eax, 11
mov ecx, 100
ret
GetValueFromASM endp
end
Ret 指令在我的 c++ 前端打印出 eax 的值,是否有某种默认返回寄存器,或者你可以指定它吗?
#include <iostream>
using namespace std;
extern "C" int GetValueFromASM();
int main()
{
cout << "sup, asm said " <<GetValueFromASM()<<endl;
cin.get();
return 0;
}
此外,指令 mov [reg], MyByte 产生错误,否则您如何将变量放入寄存器?
【问题讨论】:
-
根据 Wiki,x64 值在
RAX中返回:en.wikipedia.org/wiki/… left404.com/2011/01/04/moving-x86-assembly-to-64-bit-x86-64