MASM/NASM 差异
NASM 和 MASM 汇编器之间的语法差异是什么?
What are the syntax differences between the NASM and MASM assemblers?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
NASM 和 MASM 汇编器之间的语法差异是什么?
What are the syntax differences between the NASM and MASM assemblers?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
NASM 文档第 2.2 节的标题为 MASM 用户快速入门,其中列出了 NASM 和 MASM 之间的重要区别。
NASM 2.15 版添加了一些 MASM 兼容性,包括
%use masm
宏包。请参阅第 6.5 节masm
:MASM 兼容性。即使没有宏包,?
和DUP
也可以在db
和displacement[base+index]
等数据指令中工作允许使用 > 来代替 NASM 过去要求的常用[rdi+4]
语法。也相关,如何知道汇编代码是否具有特定语法(emu8086、NASM、TASM...)?讨论了一些语法差异。
Section 2.2 of the NASM documentation is titled Quick Start for MASM Users which lists the important differences between NASM and MASM.
NASM version 2.15 added some MASM compatibility, including a
%use masm
macro package. See section 6.5masm
: MASM compatibility. Even without the macro package,?
andDUP
work in data directives likedb
, anddisplacement[base+index]
is allowed instead of the usual[rdi+4]
syntax which NASM used to require.Also related, How to know if an assembly code has particular syntax (emu8086, NASM, TASM, ...)? discusses some of the syntax differences.
多么有趣的问题啊。它们之间的区别是,它们不兼容!但话又说回来,nasm 汇编器之间似乎并不兼容。在编译 libvpx 时,我费了很大的劲才学会了它。我认为这个例子说明了一切:
ml64.exe (MSVC 2019) -> 对于 Windows抛出
nasm ->编译一些 *.asm 文件,抛出一些
Huh?
Windows 版 yasm ->工作
llvm 汇编器 (debian) ->抛出:
https://packages.debian.org/experimental/llvm-13
yasm (debian)->作品
nasm (debian) -> GNU 汇编器工作
-> ???
https://manpages.debian.org/experimental/binutils-通用/as.1.en.html
What an interesting question. The difference between them is, they are not compatible! But then again, nasm assemblers are not compatible amongst themselves, it seems. Learned it the hard way, while compiling libvpx. I think this single example says it all:
ml64.exe (MSVC 2019) -> throws
nasm for windows -> compiles some *.asm files, throws on some
Huh?
yasm for windows -> works
llvm assembler (debian) -> throws:
https://packages.debian.org/experimental/llvm-13
yasm (debian) -> works
nasm (debian) -> works
GNU assembler -> ???
https://manpages.debian.org/experimental/binutils-common/as.1.en.html