64位的汇编

shule001 2011-05-06 11:23:30
我想在64位机器下编译下面的汇编代码,我用的是ml64.exe来编译,但是遍不过。不是说向下兼容吗?还请知道的指教啊。

.386
.model flat, c


.code

euclid PROC address:SDWORD, SaveReturn:SDWORD
NewCall:
mov [address], eax
mov eax, SaveReturn
push eax
euclid ENDP

end


错误信息:
Assembling: .\boundscheckasm.asm
.\boundscheckasm.asm(3) : error A2008:syntax error : .
.\boundscheckasm.asm(4) : error A2008:syntax error : .
.\boundscheckasm.asm(35) : error A2070:invalid instruction operands
.\boundscheckasm.asm(36) : warning A6001:no return from procedure
.\boundscheckasm.asm(33) : error A2009:syntax error in expression
...全文
180 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lactoferrin 2011-05-06
  • 打赏
  • 举报
回复
public euclid

euclid:
mov [rdx],rcx
push rax
ret
Lactoferrin 2011-05-06
  • 打赏
  • 举报
回复
你的代码意思不明
我猜对应的x64 asm文件应该如下
public euclid

euclid:
mov rcx,[rdx]
push rax
ret
masmaster 2011-05-06
  • 打赏
  • 举报
回复
64位的寄存器好像是R打头的
Lactoferrin 2011-05-06
  • 打赏
  • 举报
回复
你想实现什么功能?
shule001 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lactoferrin 的回复:]

64的还.386,c,push eax?

64位的windows附带了wow64,可以运行32位的程序
[/Quote]
不好意思,因为汇编几乎忘光了
因为汇编出来的object要和c++的object(64位)进行链接,看来只能用ml64了吧
Lactoferrin 2011-05-06
  • 打赏
  • 举报
回复
64的还.386,c,push eax?

64位的windows附带了wow64,可以运行32位的程序
shule001 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lactoferrin 的回复:]

你这是32位汇编,还不如用ml.exe
[/Quote]
我用ml.exe来编,但是编出来的是x86的,我是需要64的。不知道有没办法设置?谢谢
Lactoferrin 2011-05-06
  • 打赏
  • 举报
回复
你这是32位汇编,还不如用ml.exe

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧