2013年1月23日星期三
ml64.asm
64位汇编怎能不会。
以前以为64位汇编和32位汇编差不多,学好32位汇编就可以了。
直到用到了,才知道还有点小麻烦。
最主要的是环境的搭建.
支持64位汇编的环境有好几个,这里就不列举了。
因为是Windows上的编程,所以要首选ml64.exe了。
暂时没有发现微软的64位汇编环境,也许孤陋寡闻,也许懒得搜索。
知道masm32的原理,那就自己来吧!
所有的产品来自微软,如:mvs,sdk,wdk,所以需要先安装以上的东西。
收集过程就不说了,假定你已经熟悉mvs和masm32了。
罗嗦一句,那些东西要来自64位的目录。
具体的编写与编译有点小区别,这就令当别论了。
实验一下:
; Sample x64 Assembly Program
; Chris Lomont 2009 www.lomont.org
extrn ExitProcess: PROC ; external functions in system libraries
extrn MessageBoxA: PROC
.data
caption db '64-bit hello!', 0
message db 'Hello World!', 0
.code
Start PROC
sub rsp,28h ; shadow space, aligns stack
mov rcx, 0 ; hWnd = HWND_DESKTOP
lea rdx, message ; LPCSTR lpText
lea r8, caption ; LPCSTR lpCaption
mov r9d, 0 ; uType = MB_OK
call MessageBoxA ; call MessageBox API function
mov ecx, eax ; uExitCode = MessageBox(...)
call ExitProcess
Start ENDP
End
编译命令:ml64 hello.asm /link /subsystem:windows /defaultlib:kernel32.lib /defaultlib:user32.lib /entry:Start
从此开始我的64位汇编之旅。
汇编很少用,有时候必须用(或者用变相的方式),因为64位不支持内联汇编。
其实最根本的还是汇编,因为机器运行的是指令,相信汇编,坚信!
订阅:
博文评论 (Atom)
没有评论:
发表评论