当前位置:Linux教程 - Linux - 和luster一起学习在linux下使用汇编语言(3)

和luster一起学习在linux下使用汇编语言(3)

今天我们接着看看还有其他什么可以选择的汇编编译器:

NASM

Netwide Assebler Project计划提供了一个非常好用的 i386汇编器,这个汇编器是用C写的,可以支持很多种对象文件格式。

我们可以在下面的网址获得nasm最新的版本:

http://nasm.2y.net, http://www.cryogen.com/nasm/

语法还是使用的Intel方式的,集成了很好的对宏指令的支持。支持的object文件格式有:bin,a.out,coff,elf,as86,obj(DOS),win32,rdf等。NASM可以用作免费的
LCC编译器的backend。
除非你使用16-bit的编译器BCC,否则,你可以很好的使用NASM,而不必要去使用其他的AS86或者MASM,因为NASM在几乎所有的平台上都可以很好的运行。另外,它还有一个反汇编程序,名字叫NDISASM。

NASM是用的是一个人工编写语法分析器,比GAS速度要快。如果你喜欢用Intel风格的语法,而不习惯GAS的语法,那么NASM是你最好的选择了。

AS86

AS86是一个支持80x86的汇编编译器,同时支持16-bit和32-bit,也有集成的对宏指令的支持。在寻址表示方面有点区别外,其他语法都是何Intel的语法一样的。最新的版本可以在下面的网址获得:

http://www.cix.co.uk/~mayday/,

下面是个例子,是一个GNU Makefile里面,使用BCC来讲.s asm文件编译成aout .o 的目标文件和 .l 的listing文件:

%.o %.l: %.s bcc -3 -G -c -A-d -A-l –A$*.l -o $*.o $<
如果你不需要listing文件,就把“%.l,-A –l”和”-A$* .l”删除。如果你想编译成其他的东西,而不是a.out文件,那么可以修改BCC的参数。

其他汇编器

还有很多的可以使用的汇编器。下面列举几个,供大家参考:


Free Pascal

Free Pascal 集成了一个32-bit的汇编器。

Win32Forth assembler

Win32Forth是一个免费的32-bit的ASN FORTH系统,可以在Win32s,Win95,WinNT下正常使用。它包括了一个32-bit的汇编器,这个编译器嵌入到了FORTH语言当中了。可以在下面的站点下载:
ftp://ftp.forth.org/pub/Forth/Compilers/native/windows/Win32For/.

SHASM

SHASM是用GNU Bash Version 2编写的一个汇编器,可以在其他unix-style的“shell”命令解释器下运行。可以在下面的网址下载最新版本:
ftp://linux01.gwdg.de/pub/cLIeNUX/interim/shasm.TGZ

TDASM

TDASM是Table Driven Assembler的,可以对各种版本的汇编语言做交叉编译。可以到下面的网站下载:

http://www.penguin.cz/~niki/tdasm/

Terse

Terse是一个编程工具,它为x86系列提供了最紧凑的汇编语法编译。详细情况参考:

http://www.terse.com/

HLA

HLA 是a High Level Assembly language的缩写。它的变量声明、过程声明、过程调用等都使用高级语言类似的语法)例如使用与Pascal,C/C++类似的语法)。HLA是免费的,不过只能在Win32下面使用。访问下面的网站可以获得更多的资料:

http://webster.cs.ucr.edu/

TALC

TALC 是另外一个基于MASM/Win32地免费的编译器。TAL是Typed Assembly Language的缩写。可以访问下面的网站:

http://www.cs.cornell.edu/talc/

待续。。。
[email protected]