必威电竞|足球世界杯竞猜平台

匯編語(yǔ)言編譯器
來源:互聯(lián)網(wǎng)

匯編語(yǔ)言編譯器是一種軟件編程工具,它采用助記符表達(dá)指令操作碼,采用標(biāo)識(shí)符表示指令操作數(shù)。常用的高級(jí)語(yǔ)言編譯器有微軟MASM系列和Borland公司的TASM系列編譯器,還有一些小公司推出的或者免費(fèi)的匯編軟件包等。

編譯器介紹

MASM是Microsoft公司推出的匯編編譯器。它的版本從低到高經(jīng)過了很多次的升級(jí)(微軟的通病,升級(jí)補(bǔ)丁多如牛毛)。

每次升級(jí)除了例行的錯(cuò)誤修正外都增加了一些新的功能,以至于到最后高版本和低版本的語(yǔ)法和功能相差很多,向下兼容性也不好。低版本的MASM固然無法編譯高版本的源程序,但高版本的MASM也可能無法正常編譯低版本的源程序,如MASM 4.0寫的源程序常常無法在MASM 6.x上編譯成功。在使用MASM系列編譯器時(shí),如果不先搞清楚特定的語(yǔ)法和編譯選項(xiàng)可以在哪個(gè)版本上用,編譯中就會(huì)錯(cuò)誤連篇。所以在這里有必要了解一下MASM各版本的演變過程

下表列出了不同版本MASM編譯器的區(qū)別。

版 本

簡(jiǎn) 介

MASM 4.00

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

MASM 5.00

MASM 5.00比4.00在速度上快了很多,并將段定義的偽指令簡(jiǎn)化為類似 .code與.data之類的定義方式,同時(shí)增加了對(duì)80386處理器指令的支持,對(duì)4.00版本的兼容性很好

MASM 5.10

對(duì)程序員來說,這個(gè)版本最大的進(jìn)步是增加了對(duì)@@標(biāo)號(hào)的支持。這樣,程序員可以不再為標(biāo)號(hào)的起名花掉很多時(shí)間。另外,MASM 5.10增加了對(duì)OS/2 1.x的支持

MASM 5.10B

1989年推出,比上一個(gè)版本更穩(wěn)定、更快,它是傳統(tǒng)的dos匯編編譯器中最完善的版本

MASM 6.00

1992年發(fā)布,有了很多的改進(jìn)。編譯器可以使用擴(kuò)展內(nèi)存,這樣可以編譯更大的文件,可執(zhí)行文件名相應(yīng)從Masm.exe改為Ml.exe。從這個(gè)版本開始可以在命令行上用*.asm同時(shí)編譯多個(gè)源文件,源程序中數(shù)據(jù)結(jié)構(gòu)的使用和命令行參數(shù)的語(yǔ)法也更像C的風(fēng)格。最大的改進(jìn)之一是開始支持 .if/.endif這樣的高級(jí)語(yǔ)法,這樣,使用復(fù)雜的條件分支時(shí)和用高級(jí)語(yǔ)言書寫一樣簡(jiǎn)單,可以做到幾千行的代碼中不定義一個(gè)標(biāo)號(hào);另外增加了invoke偽指令來簡(jiǎn)化帶參數(shù)的子程序調(diào)用。這兩個(gè)改進(jìn)使匯編代碼的風(fēng)格越來越像C,可讀性和可維護(hù)性提高了很多

MASM6.00A

未發(fā)售的版本

MASM 6.00B

最后一個(gè)支持OS/2的MASM版本,修正了上一版本中的一些錯(cuò)誤

MASM 6.10

修正了一些錯(cuò)誤,同時(shí)增加了/Sc選項(xiàng),可以在產(chǎn)生的list文件中列出每條指令使用的時(shí)鐘周期數(shù)

MASM6.10A

1992年發(fā)布,修正了一些內(nèi)存管理方面的問題

MASM 6.11

1993年11月發(fā)布,支持Windows NT,可以編寫win32程序,同時(shí)支持Pentium指令,但不支持MMX指令集

MASM6.11C

1994年發(fā)布,增加了對(duì)Windows 95 VxD的支持

MASM 6.12

1997年8月發(fā)布,增加 .686,.686P,.MMX聲明和對(duì)相應(yīng)指令的支持

MASM 6.13

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

MASM 6.14

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

MASM 6.15

用法

TASMBorland公司推出的匯編編譯器,也是一種使用很廣泛的編譯器,和MASM相比,TASM的升級(jí)沒有這么頻繁。TASM早在1.0版本就有了對(duì)80386處理器指令的完全支持(MASM要到5.0版本才支持80386指令),1989年推出的1.01版本修正了1.0版的一些錯(cuò)誤;早期的版本還有TASM 3.0和TASM 4.0,其中4.0版是TASM系列編譯器編寫DOS程序使用最廣泛的版本。

到目前為止,TASM的最后一個(gè)版本是5.0版,這個(gè)版本支持win32編程,并單獨(dú)為Win32編程附帶有一整套的32位程序:32位的編譯器TASM32.EXE、鏈接器TLINK32.EXE和資源編譯器BRC32.EXE。與這些32位程序?qū)?yīng)的16位工具在軟件包中依然存在,文件名為TASM.EXE,TLINK.EXE和BRC.EXE等。

TASM 5.0命令行的使用方法是:

TASM32 [選項(xiàng)] 源文件名[,[目標(biāo)文件名],[列表文件名],[索引文件名]][;]

win32編程時(shí)TASM的常用選項(xiàng)如下表所示。

選 項(xiàng)

簡(jiǎn) 介

/ml,/mx,/mu

對(duì)大小寫是否敏感:ml=全部敏感,mx=全局變量大小寫敏感,mu=不敏感,Win32編程中必須用ml選項(xiàng)

/m#

允許第#次編譯掃描時(shí)可以向前引用,一般使用/m2

/i路徑

設(shè)定include文字所在的路徑

/l,/la

lst文件的格式:/l為正常格式,/la為擴(kuò)充格式

/zi,/zd,/zn

符號(hào)調(diào)試信息的控制:/zi為全部,/zd為僅有行號(hào),/zn為不產(chǎn)生調(diào)試信息

TASMMASM之間的導(dǎo)入庫(kù)和目標(biāo)文件等不能通用,程序員無法用微軟的鏈接器來鏈接TASM產(chǎn)生的obj文件,反之亦然,這是因?yàn)門ASM的庫(kù)文件和obj文件一直是OMF格式,與Microsoft使用的COFF格式不兼容

NASM

NASM是一個(gè)為可移植性與模塊化而設(shè)計(jì)的一個(gè)80x86的匯編器。它支持相當(dāng)多

的目標(biāo)文件格式,包括Linux和'netbsd/FreeBSD','a.out','ELF','COFF',微軟16

位的'OBJ'和'win32'。它還可以輸出純二進(jìn)制文件。它的語(yǔ)法設(shè)計(jì)得相當(dāng)?shù)暮?jiǎn)

潔易懂,和英特爾語(yǔ)法相似但更簡(jiǎn)單。它支持'Pentium','P6','MMX','3DNow!',

'SSE' and 'SSE2'指令集,

參考資料 >

生活家百科家居網(wǎng)