已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2 命令行選項(xiàng)這一章講述所有版本的GNU匯編器中可用的命令行選項(xiàng),如果想了解特定機(jī)器體系結(jié)構(gòu)的相關(guān)選項(xiàng),參見第8章 機(jī)器相關(guān)性,61頁。如果你是通過GNU 編譯器(版本2)調(diào)用as,你可以使用-Wa選項(xiàng),把參數(shù)傳給匯編器,這些參數(shù)(包括選項(xiàng)-Wa)必須使用逗號分隔。例如:gcc -c -g -O -Wa,-alh,-L file.c這個(gè)例子傳遞了兩個(gè)參數(shù)給匯編器:-alh(以高級語言和匯編語言的形式生成清單到標(biāo)準(zhǔn)輸出)-L(在符號表中保留局部符號)。通常你沒必要使用-Wa選項(xiàng),因?yàn)榫幾g器把很多命令行選項(xiàng)自動傳遞給匯編器。(你可以通過-v選項(xiàng)使用GNU編譯器,來確切了解有什么選項(xiàng)被傳遞給編譯過程,包括傳遞給匯編器的選項(xiàng))2.1 開啟清單選項(xiàng):-acdhlns這些選項(xiàng)開啟了匯編器的清單輸出。如果只有-a選項(xiàng),表示需要生成高級語言,匯編語言和符號清單。你可以用其他字母去選擇特定的清單選項(xiàng):-ah需要生成一個(gè)高級語言清單,-al 需要生成一個(gè)輸出程序的匯編語言清單,-as需要生成符號表的清單。生成高級語言清單需要使用一個(gè)-g之類的編譯調(diào)試選項(xiàng),匯編語言清單(-al)也需要上述調(diào)試選項(xiàng)。使用-ac 選項(xiàng)刪去清單中匯編條件為假(false)的語句。下列語句行不進(jìn)行匯編:一個(gè)條件為false的.if語句塊(或是.ifdef語句塊,或是其他的條件匯編語句塊),條件為true的.if后面的那個(gè).else語句塊,所有不會被匯編的行都會從清單中刪去。使用選項(xiàng)-ad選項(xiàng)刪除清單中的調(diào)試命令。一旦使用了上述某個(gè)選項(xiàng),你就可以使用 .nolist,.psize,.title,和 .sbttl 命令進(jìn)一步控制清單輸出格式。選項(xiàng)-an關(guān)閉所有清單表格的處理。如果你不需要輸出清單,就不必使用一個(gè)-a系列的選項(xiàng),這時(shí)的清單控制命令不會生效。選項(xiàng)-a后的字母可以合成一個(gè)選項(xiàng)(例如-aln)。注意,如果匯編源碼來自標(biāo)準(zhǔn)輸入(例如源碼是由gcc創(chuàng)建,并且使用了-pipe命令行開關(guān)),則清單中不含有注釋和預(yù)處理命令。這是因?yàn)橹挥性谠创a行被匯編器預(yù)處理后,清單代碼緩沖區(qū)才從標(biāo)準(zhǔn)輸入中讀取源代碼行。這樣減少了內(nèi)存的使用,并且使生成的代碼更有效率。2.2 -D這個(gè)選項(xiàng)沒什么作用,但as接受這個(gè)選項(xiàng),使那些寫給其他匯編器的腳本文件也能被as使用。2.3 快速匯編:-f只有在被匯編程序的源碼是由可信任的編譯器產(chǎn)生的情況下,才能使用-f選項(xiàng)。 使用選項(xiàng)-f時(shí),如果匯編器在匯編輸入文件前要對它們進(jìn)行空格和注釋的預(yù)處理,則會終止匯編器的匯編。參見.1預(yù)處理,17頁。警告:如果文件事實(shí)上需要預(yù)處理時(shí)(如果它們包含有注釋),而你使用了-f,as將不能正常工作。2.4 .include命令搜索路徑: -I path使用這個(gè)選項(xiàng)給目錄清單加一個(gè)路徑path,這個(gè)目錄清單是.Include命令在搜索指定文件使用的,(參見 7.37 .include,44頁)。 你可以視需要多次使用-I來加入不同的路徑。第一個(gè)搜索的總是當(dāng)前工作目錄;然后,as安照命令行中的順序(從左到右)搜索-I選項(xiàng)指定的目錄。2.5 不同的跳轉(zhuǎn)表: -K在as中使用.word sym1-sym2形式的命令有時(shí)會改變生成的代碼(參考7.92 .word,59頁)。如果在遇到上述情況時(shí)您希望as會發(fā)出一個(gè)警告您可以使用選項(xiàng)-K。2.6 包含局部標(biāo)簽: -L以L(必須大寫)字母開頭的標(biāo)簽叫做局部標(biāo)簽(參見5.3 符號名,29頁)。通常調(diào)試時(shí)你看不見它們,因?yàn)樗鼈兪枪┥蓞R編源程序的程序(如編譯器)使用的,而不是為了引起你的注意。一般來講as和ld丟棄這些標(biāo)簽,所以你不能用它們來調(diào)試。這個(gè)選項(xiàng)讓as在目標(biāo)文件中保留那些L符號。一般如果你這樣做了,你也應(yīng)該讓連接器ld保留那些以符號名L 開頭的符號。默認(rèn)情況下,以L開始的標(biāo)簽是一個(gè)局部標(biāo)簽,不過每一個(gè)目標(biāo)允許重新定義一個(gè)局部標(biāo)簽的前綴。在HPPA上,局部標(biāo)簽以L$開始。2.7 配置清單輸出: -listing通過命令行開關(guān)-a可以開啟匯編程序的清單功能(參見2.1 -a,11頁)。這個(gè)功能使輸入源文件和輸出目標(biāo)文件的16進(jìn)制映象組合起來,并且以清單文件的形式顯示它們。清單的格式可以通過匯編源代碼中的偽操作來控制(參見7.48 List,47頁 ;7.83 Title, 57頁 ;7.64 Sbttl,51頁 ;7.59 Psize,50頁 ;7.14 Eject, 40頁)也可以通過以下開關(guān):-listing-lhs-width=number 設(shè)置16進(jìn)制字節(jié)映象第一行的最大寬度,寬度單位為字(16位)。這個(gè)映象顯示在清單輸出的左邊。-listing-lhs-width2=number由給定的源代碼行生成的16進(jìn)制字節(jié)映象,設(shè)置這個(gè)映象的除第1行外的所有行的最大寬度,寬度單位為字。如果沒有指定寬度值,那它默認(rèn)等于-listing-lhs-width的設(shè)定值。如果兩個(gè)開關(guān)都沒指定,那么默認(rèn)值是1。-listing-rhs-width=number設(shè)置源代碼行的最大寬度,寬度單位為字符,源代碼顯示在16進(jìn)制映象旁邊。默認(rèn)寬度值是100。源代碼行顯示在輸出清單的右邊。-listing-cont-lines=number對于給定的一行源代碼輸入,設(shè)置16進(jìn)制映象連續(xù)行數(shù)的最大值。默認(rèn)值是4。2.8 以MRI兼容模式匯編:-M 選項(xiàng) M 或 -mri 選擇 MRI 兼容模式。它改變了 as 的語法和偽操作處理,使它兼容于Microtec Research 的 ASM68K 或者 ASM960 (視配置目標(biāo)而定)匯編器。這里沒有給出 MRI 語法具體形式,您可以查看 MRI 的手冊。需要特別注意的是宏和宏參數(shù)的處理有一些不同。這個(gè)選項(xiàng)的目的是允許使用 as 匯編現(xiàn)存的MRI匯編器代碼。as并不完全與MRI兼容。MRI 匯編器的具體操作依賴于目標(biāo)文件格式,使用其他目標(biāo)文件格式不支持這些操作。要想支持這些需要分別增強(qiáng)各種目標(biāo)文件的格式。它們是: 公共段中的全局符號M68K的MRI匯編器允許使用通用段(common sections),而通用段將被連接器合并。其它目標(biāo)文件格式并不支持使用通用段。 as處理通用段時(shí)把整個(gè)通用段當(dāng)作一個(gè)單獨(dú)的通用符號。它允許在通用段中定義局部符號,但是它不支持通用段中使用全局符號,因?yàn)闆]法描述它們。 復(fù)雜重定向MRI匯編器允許錯(cuò)誤段址的重定向,重定向連接了兩個(gè)或多個(gè)段的起始地址。其它目標(biāo)文件格式都不支持這些。 END偽操作指定的啟始地址MRI中的END偽操作允許指定一個(gè)開始地址。其它目標(biāo)文件格式不允許這么做。你也可以對連接程序使用選項(xiàng) -e來指定起始地址,也可以在連接腳本中指定。 IDNT, .ident 和 NAME偽操作MRI 中的IDNT, .ident 和 NAME 偽操作給輸出文件分配一個(gè)模塊名。其它目標(biāo)文件格式不支持。 ORG 偽操作m68k的MRI中ORG偽操作在一個(gè)給定的地址開辟一個(gè)具有獨(dú)立地址的段。這和通常的as的 .ORG 偽操作不同,它在當(dāng)前的段中改變定位。別的目標(biāo)文件格式不支持獨(dú)立段。因?yàn)橐粋€(gè)段的地址可能在連接腳本中分配。 還有一些MRI匯編器的功能as不支持,大體上,它們都難于實(shí)現(xiàn),而且似乎無關(guān)緊要。其中的一些特性可能在今后的版本中將會支持。EBCDIC strings不支持EBCDIC 字符串。壓縮BCD 碼不支持壓縮BCD 碼。這表示不支持 DC.P 和 DCB.P 偽操作。FEQU 偽操作不支持m68k 的 FEQU 偽操作。NOOBJ 偽操作不支持m68k 的 NOOBJ 偽操作。優(yōu)化分支控制選項(xiàng)(OPT branch control options)忽略 m68k 的優(yōu)化分支控制選項(xiàng)B, BRS, BRB, BRL, 還有BRW。as自動的放松所有的分支(不管是向前還是向后)到一個(gè)合適的大小,所以這些選項(xiàng)不起作用。優(yōu)化清單控制選項(xiàng)(OPT list control options)以下m68k的優(yōu)化清單控制選項(xiàng)被忽略:C, CEX, CL, CRE, E, G, I, M, MEX, MC, MD, X. 其它優(yōu)化選項(xiàng)以下的m68k的OPT選項(xiàng)被忽略:NEST, O, OLD, OP, P, PCO, PCR, PCS, R.優(yōu)化 D 選項(xiàng)為默認(rèn)值不象 MRI 匯編程序,m68k優(yōu)化 D 選項(xiàng)是默認(rèn)的??梢杂眠x項(xiàng) NOD 關(guān)閉它。XREF 偽操作忽略m68k的XREF。 .debug 偽操作不支持i960 的.debug偽操作。 .extended 偽操作不支持 i960 的 .extended 偽操作。 .list 偽操作不支持 i960 的 .list 偽操作的各種選項(xiàng)。 .optimize pseudo-op不支持 i960 的 .optimize 偽操作。.output pseudo-op不支持 i960 的 .output 偽操作。.setreal pseudo-op不支持 i960 的 .setreal 偽操作。2.9 相關(guān)性跟蹤:-MDas能為它創(chuàng)造的文件產(chǎn)生一個(gè)從屬文件。這個(gè)文件包括一個(gè)規(guī)則,用來為make描述主要源文件的依賴性。規(guī)則寫進(jìn)文件,文件名規(guī)則的參數(shù)中指定。自動更新 makefiles 使用了這個(gè)功能。2.10 命名目標(biāo)文件:-o當(dāng)你運(yùn)行as時(shí),總是產(chǎn)生一個(gè)目標(biāo)文件。在默認(rèn)的情況下,它的名字是 a.out(或者是b.out僅對 Intel 960 )。你用這個(gè)選項(xiàng)(選項(xiàng)后跟一個(gè)文件名)給目標(biāo)文件指定一個(gè)不同的文件名。不管目標(biāo)文件叫什么,as覆蓋現(xiàn)存的同名文件。2.11 合并數(shù)據(jù)段和正文段:-R選項(xiàng)-R讓as輸出目標(biāo)文件,在目標(biāo)文件中數(shù)據(jù)段中的數(shù)據(jù)保存在正文段。這一步只在最后做:你得到的二進(jìn)制數(shù)據(jù)一樣,可是數(shù)據(jù)段部分的重定向不同。你的目標(biāo)文件的數(shù)據(jù)段部分只有零字節(jié)長度,因?yàn)樗械淖止?jié)都被追加到代碼段后面(參見第4章 段和重定向,23頁)當(dāng)你指定了選項(xiàng)R,它可能會產(chǎn)生更短的地址移動(因?yàn)槲覀儾槐卦跀?shù)據(jù)段和代碼段之間轉(zhuǎn)移)。為了兼容老版本的as我們應(yīng)盡量避免使用這個(gè)選項(xiàng)。以后,可以使用R這樣做。as配置成輸出COFF的文件格式,只有你使用名字為 .text 和 .data 的段時(shí),這個(gè)選項(xiàng)才有用。任何HPPA處理器的目標(biāo)格式都不支持選項(xiàng)R 。如果使用了,as 會產(chǎn)生一個(gè)警告。2.12 顯示匯編的統(tǒng)計(jì)資料: -statistics使用-statistics來顯示as使用資源的兩個(gè)統(tǒng)計(jì)數(shù)據(jù):匯編時(shí)分配的最大空間(字節(jié))和匯編過程的花費(fèi)的時(shí)間(占用cpu的秒數(shù))。2.13 兼容輸出: -traditional-format對一些目標(biāo)格式來講,as的輸出和一些現(xiàn)存的匯編器有點(diǎn)不同。這個(gè)開關(guān)要求as使用傳統(tǒng)的格式。例如,它關(guān)閉了異常結(jié)構(gòu)優(yōu)化,而在默認(rèn)情況下,as對gcc的輸出都進(jìn)行異常結(jié)構(gòu)優(yōu)化。2.14 顯示版本: -v通過在命令行中加上選項(xiàng)-v(也可寫成 -version),你能找出當(dāng)前運(yùn)行as的版本號。2.15 警告控制:-W,-warn,-no-warn,-fatal-warnings 當(dāng)as匯編編譯器的輸出時(shí),從不發(fā)出警告或錯(cuò)誤信息。但人們寫的程序經(jīng)常引發(fā)as產(chǎn)生警告,警告指出已觸發(fā)了一個(gè)特定的條件。這些警告都被定向到標(biāo)準(zhǔn)的錯(cuò)誤文件。如果你使用了選項(xiàng)W 和-no-warn ,就不會產(chǎn)生警告。這只影響到警告的信息:它不會影響到as如何匯編你的文件。而錯(cuò)誤,將會終止匯編過程,仍會被報(bào)告。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個(gè)性化離婚協(xié)議范本(情感補(bǔ)償與子女撫養(yǎng)權(quán))4篇
- 2025裝修補(bǔ)貼合同
- 二零二五年度文化用品批發(fā)合同示范文本3篇
- 二零二五年度留學(xué)保險(xiǎn)及緊急援助服務(wù)協(xié)議3篇
- 二零二五年度誠意金合作開發(fā)項(xiàng)目協(xié)議范本4篇
- 二零二五年度電商企業(yè)合規(guī)性審查合同4篇
- 二零二五年度超聲刀美容院設(shè)備租賃與運(yùn)營管理合同3篇
- 2025年度出納人員遠(yuǎn)程工作聘用合同范本3篇
- 2025年度車庫智能停車系統(tǒng)采購合同4篇
- 二零二五年度核能技術(shù)顧問聘請合同
- 開題報(bào)告-鑄牢中華民族共同體意識的學(xué)校教育研究
- 《醫(yī)院標(biāo)識牌規(guī)劃設(shè)計(jì)方案》
- 公司2025年會暨員工團(tuán)隊(duì)頒獎(jiǎng)盛典攜手同行共創(chuàng)未來模板
- 新滬科版八年級物理第三章光的世界各個(gè)章節(jié)測試試題(含答案)
- 夜市運(yùn)營投標(biāo)方案(技術(shù)方案)
- 電接點(diǎn) 水位計(jì)工作原理及故障處理
- 國家職業(yè)大典
- 2024版房產(chǎn)代持協(xié)議書樣本
- 2024年四川省成都市成華區(qū)中考二診物理試題
- 2024年3月計(jì)算機(jī)等級考試三級數(shù)據(jù)庫技術(shù)筆試真題及答案
- 公眾號運(yùn)營實(shí)戰(zhàn)手冊
評論
0/150
提交評論