作者:luster
摘要:Netwide Assebler Project计划提供了一个非常好用的 i386汇编器,这个汇编器是用C写的,可以支持很多种对象文件格式。
今天我们接着看看还有其他什么可以选择的汇编编译器:
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/
待续。。。
luster@linuxaid.com.cn