一起學習在linux下使用匯編語言(3)
2024-07-21 02:37:18
供稿:網友
作者: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