assembly - 试图在 VS2017 ml64 中编译 x64 程序集,给出奇怪的语法错误
问题描述
我正在尝试将此处找到的 DXT 解压缩库构建到 x64 DLL: http: //www.matejtomcik.com/Public/KnowHow/DXTDecompression/#x64
我已按照以下步骤操作:
创建了一个空的 Windows DLL 项目。
右键单击项目>>构建依赖项>>构建自定义...>>启用masm
将所有 src asm/c/h 文件添加到项目中
右键单击项目>>属性>> Microsoft宏汇编程序>>常规>>预处理器定义添加_WIN64
将构建目标设置为 Release x64
现在,当我尝试编译项目时,它会遇到第一个 asm 文件:
ifndef _WIN64
.model FLAT, C
endif
.data
EXTERNDEF aAlphaDxt3Lookup:DWORD
aAlphaDxt3Lookup DD 0h,011000000h,022000000h,033000000h,044000000h,055000000h,066000000h,077000000h
DD 088000000h,099000000h,0aa000000h,0bb000000h,0cc000000h,0dd000000h,0ee000000h,0ff000000h
end
并给出此错误:
A2008 语法错误:。(第 2 行)
我假设我错过了一些设置步骤或在 VS 中的某处有不正确的选项。我尝试切换几个设置,添加 .586 等无济于事。
编辑:问题澄清:Removing .model FLAT, C
修复语法错误并且 asm 文件正确编译。ml64 仍然使用 .mode 吗?
x64 汇编器 (ML64) 不接受许多较旧的 x86 指令。不允许使用所有 CPU 模型指令,因为它们对 64 位代码没有意义。此外,模型现在一直是 FLAT,因为我们不需要担心分段内存。另外,请注意,PROC/INVOKE 指令当前不会自动生成展开指令...
解决方案
好的,所以找到了它: https ://msdn.microsoft.com/en-us/library/ss9fh0d6.aspx
评论
.MODEL 未在 MASM for x64 (ml64.exe) 中使用。
真的吗?在备注部分...MS 很高兴添加描述性错误消息。
推荐阅读
- mdx - 如何在 MDX 中获取下一个可用日期
- java - JPA 为依赖实体创建新条目
- date - 在 Google 表格中生成间隔为 1 个月的日期数组
- laravel - 为什么 Laravel 在关系上使用存在时不会进行大量查询?
- reactjs - 将 React 应用程序部署到浪涌.sh 后出现空白页面
- c# - 带有打字稿和信号器的.net core 2.2
- .htaccess - 如何修复.htaccess中的双href?
- sql - 如何将电子邮件地址拆分为点 (.) 之前和之后的部分
- python - 带有列表列表的数据操作
- python - Module/class visible in whole project - Python