首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何构建(或移植?)MASM ASM文件与llvm/clang?

如何构建(或移植?)MASM ASM文件与llvm/clang?
EN

Stack Overflow用户
提问于 2019-10-11 00:41:11
回答 1查看 360关注 0票数 2

我正在做一个使用微软工具链(cl.exe,ml.exe,link.exe)的项目,我试图将其移植到LLVM/clang,作为开源工作的一部分。移植C文件的编译已经足够简单了,但是弄清楚如何构建我们的许多*.asm文件(用MASM语法编写)却让我很为难。

我找不到让llvm工具(或nasm )从MASM源代码生成目标文件的方法。移植文件本身将是许多计划外的工作,如果可能的话,我需要避免这些工作,特别是因为它们中的许多不属于我们。

有什么建议吗?有没有什么晦涩难懂的命令行开关可以做到这一点?我听说过JWasm,但我还没有调查过它。如果从masm移植到nasm是唯一的选择,那么有什么准则可以简化转换吗?

EN

回答 1

Stack Overflow用户

发布于 2019-10-11 01:09:52

没有命令行选项可以让NASM、GAS或LLVM理解MASM语法和指令。

GAS .intel_syntax noprefix类似于MASM,因此您只需移植指令(如proc foo / end foo而不是foo: )。而不是dd 1234)和宏。我至少会将机器代码与MASM构建的目标文件进行比较,看看它是否以相同的方式组装。(可能是模数绝对地址)。或者至少比较反汇编,看看这两个版本是否反汇编回相同的指令。

我还没有尝试过JWasm,但这可能是你最好的选择。我认为它应该是真正汇编MASM语法的。从长远来看,你可能希望通过移植到GAS .intel_syntax来减少构建工作量,否则就继续使用JWasm,除非它被证明对可移植性或其他东西有负面影响。

汇编语言有更多的东西,而不仅仅是上面有指令的代码行。数据的对齐和布局可能很重要,任何区段/段的把戏以及使它们可执行还是不可执行都可能很重要。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58327530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档