有人能解释一下masm、tasm和nasm之间的区别吗?为什么我不能在linux上运行tasm代码?它们是不同的语言吗?我认为汇编语言对于所有系统都是独一无二的。
发布于 2020-05-17 22:17:12
TASM、MASM和NASM是x86汇编程序。
Borland (TASM)和Microsoft Macro Assembler (MASM)是基于DOS/Windows的,Netwide汇编程序(NASM)也适用于其他平台。TASM产生16位/32位输出,MASM和NASM也产生64位输出.
所有这些汇编程序都以x86指令集作为输入。但是,这并不意味着汇编程序源文件是相同的和兼容的。
指令语法
汇编程序希望使用Intel指令集文档中使用的原始语法-- Intel语法--或者AT&T Bell实验室开发的所谓AT&T语法。AT&T使用mov src, dest
,英特尔使用mov dest, src
,还有其他不同之处。
Windows汇编程序更喜欢Intel语法(TASM,MASM),大多数Linux/UNIX汇编程序使用AT&T。NASM使用Intel语法的一个变体。
汇编程序特定语法
汇编程序有自己的语法,用于处理影响组装过程、宏和注释的指令。这些通常因汇编程序而异。
兼容性
TASM可以在"MASM模式“下组装MASM源。
NASM可以在"TASM模式“下组装TASM代码。因此,从理论上讲,您可以使用TASM代码并使用该模式在Linux上使用NASM组装它们。当然,代码可能仍然需要调整。如果代码有操作系统依赖项,这将需要您的注意,也需要您从Windows迁移到Linux。
https://stackoverflow.com/questions/61857760
复制相似问题