Assembly MASM/NASM差异

Assembly MASM/NASM差异,assembly,x86,nasm,masm,Assembly,X86,Nasm,Masm,NASM和MASM汇编程序之间的语法差异是什么?NASM文档的第2.2节的标题列出了NASM和MASM之间的重要差异。这是一个多么有趣的问题。它们之间的区别是,它们不兼容!但再一次,nasm汇编程序之间似乎不兼容。在编译libvpx时,通过艰苦的方式学会了这一点。我认为这个例子说明了一切: ml64.exe(MSVC 2019)->抛出 nasm for windows->编译一些*.asm文件,抛出一些 invalid combination of opcode and operands 嗯

NASM和MASM汇编程序之间的语法差异是什么?

NASM文档的第2.2节的标题列出了NASM和MASM之间的重要差异。

这是一个多么有趣的问题。它们之间的区别是,它们不兼容!但再一次,nasm汇编程序之间似乎不兼容。在编译libvpx时,通过艰苦的方式学会了这一点。我认为这个例子说明了一切:

ml64.exe(MSVC 2019)->抛出

nasm for windows->编译一些*.asm文件,抛出一些

invalid combination of opcode and operands

yasm for windows->works

llvm汇编程序(debian)->抛出:

    /usr/lib/llvm-13/bin/llvm-as

yasm(debian)->有效

nasm(debian)->有效

GNU汇编程序->


在该部分中指出:“NASM区分大小写”但是,MASM也可以区分大小写,只需在
中使用:option casemap:noneGAS/llvm即可。intel\u syntax noprefix
模式使用与MASM相当的语法作为指令,但是对于特定于它们的指令。
nasm-felf64 foo.asm
应该以相同的方式工作,无论您构建的是哪台主机。如果您有一些汇编在Linux上而不是Windows上的asm文件,可能是因为使用不同的位进行构建(例如,
nasm-fwin32
nasm-felf64
),或者是关于指令的原因,或者如果有条件的东西在Windows上做了一些不同的事情,.asm可能会使用
%。)如果没有说明示例,那么说NASM在Windows上出错是没有用的。什么,在每个文件上?不,当然不是。相关:显示了一些语法差异示例。