本人小白,对16位32位汇编只是略知一二(刚入门那种),现在突然接触x64的汇编,整个人蒙了;最近用x64的vs2013下不能内嵌汇编了(__asm),我的方法就是用单独的asm文件编译一个.obj和c++链接到一起,但是问题来了,主要不是在单独编译.asmd的设置上,而是在汇编语法上;
问题1:x64汇编的语法是什么样的比如怎么声明定义函数,在win32汇编的开头好像有.386与.model stdcall,flat之类的,那x64汇编了? 求参考的源码和相关的书籍与教程;
问题2:
在vs2013上的.asm文件中编写时代码无颜色,有没有这方面的插件可以供使用;
哪位好心的帮小弟解答下感激不尽;
问题3:
程序代码:
mov r11, 10000h//这句代码在MFC的项目上报错你,而在WDK的项目上正常;
//ASM.asm(24): error A2008: syntax error : in instruction
//1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations\masm.targets(50,5): error MSB3721: 命令“ml64.exe /c /nologo /Zi /Fo"x64\Debug\ASM.obj" /W3 /errorReport:prompt /TaASM.asm”已退出,返回代码为 1。
extrn MessageBoxA: proc
.data
text db 'Hello x64!', 0
caption db 'My First x64 Application', 0
.code
Main proc
sub rsp,28h
xor r9d,r9d
mov r11, 1000h//这句会报错错;
lea r8, caption
lea rdx, text
xor rcx,rcx
call MessageBoxA
add rsp,28h
ret
Main ENDP
------解决思路----------------------
虽然我没在Win64上实际用过VS,但下面Win32下设置VS编译时生成C/C++对于你跟汇编文件的过程仅供参考:
项目、属性、配置属性、C/C++、输出文件、汇编程序输出、带源代码的程序集 (/FAs)
------解决思路----------------------
这个是没有问题的,只是你的文件最后缺少end。
------解决思路----------------------
VS2013的ASM语法高亮插件AsmHighlighter
把邮箱留下我发给你
双击安装
如果安装后没有高亮源代码显示
关闭VS然后从注册表中删除下面的项
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0\FontAndColors\Cache