masm masm32 fasm nasm yasm gas的區別與聯繫

masm

MASM是微軟公司開發的彙編開發環境,擁有可視化的開發界面,使開發人員不必再使用DOS環境進行彙編的開發,編譯速度快,支持80x86彙編以及Win32AsmWindows下開發彙編的利器。它與windows平臺的磨合程度非常好,但是在其他平臺上就有所限制,使用MASM的開發人員必須在windows下進行開發。

masm32

MASM32 是一個爲那些對學習或者編寫 32 位微軟彙編( MASM )感興趣 的程序員提供的工作環境,它最流行的版本是 8.0 版,而我所知道最新版本是 9.0 版。但是請大家一定要注意,這裏的 8.0 版和 9.0 版不是指 MASM 編譯器 ( 即 ML) 的版本,而是 MASM32 開發環境的版本。

那麼 MASM(ML) 編譯器的版本到底有哪些呢?教學上常用的版本是 5.0 版的, 5.0 版之後有個 5.1 版本,在這之後,從 6.0 版開始 MASM 就改名 ML 了,因爲它把編譯和連接組合在一起了。而且 6.0 版還對彙編語言進行了大幅改造,使之支持高級語言的很多特性。 6.0 版之後常看到的就是 6.11 、 6.13 、 6.14 MASM32(V8.0 和 V9.0) 就是包含有 ML6.14 版 , 而不是 ML8.0 版。 6.14 之後就是 6.15 但不常見 , 我手頭上有 6.15 的 ML 。但 Microsoft 從 6.15 版開始好象就不再單獨發佈 MASM 的開發工具包了。

         以後的 ML 還有 7.0 、 7.1 版,最新的是 ML8.0 版。但它們都只包含在 Visual Studio.Net 和 Visual Studio 2005 裏面。而且如果你 安裝了 Visual Studio 2005 的 64 位開發環境,你將得到一個MASM for x64 ( ml64 .exe) 哈哈,各位這可是支持 Intel 和 AMD 的 64 位 CPU 的彙編語言編譯器!有志於 64 位底層開發的趕快去試用看看吧。

                                                         
                                                              MASM 編譯器各版本的區別

版     本

簡     介

MASM 4.00

這是最先廣泛使用的一個 MASM 版本,適用於 DOS 下的彙編編程。它很精巧,但使用起來不是很智能化,需要用戶自己一板一眼地寫出所有的東西。很多教科書上講的 8086 彙編語法都是針對這個版本的,對程序員來說。它只比用 Debug 方便一點點

MASM 5.00

MASM 5.00 比 4.00 在速度上快了很多,並將段定義的僞指令簡化爲類似 .code 與 .data 之類的定義方式,同時增加了對 80386 處理器指令的支持,對 4.00 版本的兼容性很好

MASM 5.10

對程序員來說,這個版本最大的進步是增加了對 @@ 標號的支持。這樣,程序員可以不再爲標號的起名花掉很多時間。另外, MASM 5.10 增加了對 OS/2 1.x 的支持

MASM 5.10B

1989 年推出,比上一個版本更穩定、更快,它是傳統的 DOS 彙編編譯器中最完善的版本

MASM 6.00

1992 年發佈,有了很多的改進。編譯器可以使用擴展內存,這樣可以編譯更大的文件,可執行文件名相應從 Masm.exe 改爲 Ml.exe 。從這個版本開始可以在命令行上用 *.asm 同時編譯多個源文件,源程序中數據結構的使用和命令行參數的語法也更像 C 的風格。最大的改進之一是開始支持 .if/.endif 這樣的高級語法,這樣,使用複雜的條件分支時和用高級語言書寫一樣簡單,可以做到幾千行的代碼中不定義一個標號;另外增加了 invoke 僞指令來簡化帶參數的子程序調用。這兩個改進使彙編代碼的風格越來越像 C ,可讀性和可維護性提高了很多

MASM 6.00A

未發售的版本

MASM 6.00B

最後一個支持 OS/2 的 MASM 版本,修正了上一版本中的一些錯誤

MASM 6.10

修正了一些錯誤,同時增加了 /Sc 選項,可以在產生的 list 文件中列出每條指令使用的時鐘週期數

MASM 6.10A

1992 年發佈,修正了一些內存管理方面的問題

MASM 6.11

1993 年 11 月發佈,支持 Windows NT ,可以編寫 Win32 程序,同時支持 Pentium 指令,但不支持 MMX 指令集

MASM 6.11C

1994 年發佈,增加了對 Windows 95 VxD 的支持

MASM 6.12

1997 年 8 月發佈,增加 .686 , .686P , .MMX 聲明和對相應指令的支持

MASM 6.13

1997 年 12 月發佈,增加了 .K3D 聲明,開始支持 AMD 處理器的 3D 指令

MASM 6.14

這是一個很完善的版本,它在 .XMM 中增加了對 Pentium III 的 SIMD 指令集的支持,相應增加了 OWORD ( 16 字節)的變量類型

MASM 6.15

2000 年 4 月發佈

 

nasm fasm yasm

這三個都是免費開源的彙編編譯器,總體上都是採用的Intel的語法。yasm是從nasm的基礎上開發出來的,屬於同宗,使用了相同的語法,所以nasm的代碼可以用yasm編譯。

yasm雖然更新較慢,但對nasm一些不合理的地方進行了改良。從這個角度來看,yasm比nasm更優秀些,而nasm更新快,能支持更新的指令集,而且還支持Gas語法和AMD64(EM64T)架構,跨平臺,支持多種目標文件格式。在Windows平臺上,fasm是另一個不錯的選擇,平臺支持比較好,可以直接用來開發Windows上的程序,語法也比較獨特。在對Windows程序結構的支持上,fasm是3個免費的編譯器裏做得最好的。

yasm的官方地址:http://yasm.tortall.net/Download.html。使用很簡單:將下載下來的yasm-1.2.0-win32.exe重命名爲yasm.exe,放到D:\Program Files\Microsoft Visual Studio 9.0\VC\bin目錄下即可。

nasm的官方地址:http://www.nasm.us/

gas

Gas即GNU assembler 是linux下的彙編編譯器,使用的AT&T的語法。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章