有人可以解释:masm,tasm和nasm之间的区别吗?为什么我不能在linux上运行tasm代码?他们是不同的语言吗?我认为汇编语言在所有系统中都是唯一的。
TASM,MASM和NASM是x86汇编程序。
Borland Turbo汇编程序(TASM)和Microsoft宏汇编程序(MASM)是基于DOS / Windows的,Netwide汇编程序(NASM)也可用于其他平台。 TASM产生16位/ 32位输出,MASM和NASM也产生64位输出。
所有这些汇编程序都将x86指令集作为输入。但是,这并不意味着汇编程序源文件是相同且兼容的。
指令语法
组装者希望使用Intel指令集文档中使用的原始语法-Intel语法-或AT&T贝尔实验室开发的所谓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上组装它们。当然,代码可能仍需要调整。如果代码具有OS依赖性,那么从Windows迁移到Linux时,将需要引起您的注意。