NASM,TASM和MASM之间的差异

问题描述 投票:-1回答:1

有人可以解释:masm,tasm和nasm之间的区别吗?为什么我不能在linux上运行tasm代码?他们是不同的语言吗?我认为汇编语言在所有系统中都是唯一的。

linux windows nasm masm tasm
1个回答
-1
投票

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时,将需要引起您的注意。

© www.soinside.com 2019 - 2024. All rights reserved.