新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM匯編程序設計之:ARM匯編編譯器的使用

        ARM匯編程序設計之:ARM匯編編譯器的使用

        作者: 時間:2013-09-30 來源:網絡 收藏

        10.4的使用

        匯編語言的,本節將詳細介紹它的使用方法。

        本文引用地址:http://www.104case.com/article/257045.htm

        命令行語法格式如下。

        optionsinputfile

        在armasm命令中,除了文件名區分大小寫之外,其他的參數都不區分大小寫。option可是匯編器規定選項中的一個或多個的組合,多個選項用空格分開。下面詳細介紹armasm的各參數。

        ·--16:告訴匯編器當前程序是Thumb指令程序,使用舊的Thumb語法,與在源程序開頭使用偽操作CODE16意義相同。使用--thumb選項指定當前程序是使用語法的Thumb或Thumb-2源程序。

        ·--32:告訴匯編器所處理的源程序是ARM指令的程序。此選項為匯編器的默認選項。

        ·--apcs[qualifiers]:該選項告訴匯編器是否使用AAPCS標準編譯源程序。詳見AAPCS一節。

        ·--arm:同--32選項。

        ·--bigend:告訴匯編器將源程序按大端模式編譯。匯編器默認為小端模式(littleend)。

        ·--brief_diagnostics:控制輸出診斷信息。詳見控制診斷信息輸出一節。

        ·--littleend:告訴編譯器將源程序按小端模式編譯。這是匯編器的默認選項。

        ·--checkreglist:告訴匯編器檢測RLIST、LDM、STM指令的寄存器列表是否按升序排列。使用此選項后,如果源程序中寄存器沒有按升序排列,匯編器將給出警告信息。

        ·--cpuname:告訴匯編器允許程序所使用的CPU型號,詳見CPU名一節。

        ·--debug:告訴編譯器編譯時產生DWARF格式的調試信息表。

        ·--dependdependfile:告訴編譯器將程序的依賴關系列表輸出到指定的dependfile文件中。當使用makefile文件對程序進行編譯時,該選項十分有用。

        ·--diag_[error|remark|warning|suppress|style]:詳見控制診斷信息輸出一節。

        ·--dllexport_all:告訴編譯器產生全局變量的動態可見列表(dynamicvisibility),在將源程序編譯成DLL文件時使用該選項。

        ·--dwarf2:和--debug選項配合使用。告訴編譯器編譯時產生DWARF2格式的調試信息表,當使用了--debug選項時,該選項為默認選項。

        ·--dwarf3:和--debug選項配合使用。告訴編譯器編譯時產生DWARF3格式的調試信息表。

        ·-m:告訴編譯器將源文件的依賴關系列表輸出到標準輸出設備上。

        ·--md:告訴編譯器將源文件的依賴關系列表輸出到inputfile.d文件中。

        ·--errorserrorfile:告訴編譯器將編譯的錯誤信息輸出到errorfile文件中。

        ·--exceptions:詳見指示編譯器產生異常向量表一節。

        ·--exceptions_unwind:詳見指示編譯器產生anwind異常向量表一節。

        ·--fpmodemodel:詳見10.4.3。

        ·--fpuname:選擇指定目標系統中浮點運算單元的體系結構。

        ·-idir[,dir]…:為源文件搜索增加路徑,如果要搜索的源文件路徑已被此選項指定,那么在使用偽操作GET、INCLUDE、INCBIN包含源文件時,將不必指定搜索路徑。

        ·--keep:指定匯編器將局部符號保留在目標文件的符號表中,供調試器進行調試時使用。

        ·--list[listingfile]:告訴匯編器將匯編過程中產生的列表保存到列表文件listingfile文件中。

        ·--maxcachen:指定最大的源程序cache大小,默認為8MB。

        ·--memaccessattributes:確定目標系統的內存屬性。詳見內存訪問屬性一節。

        ·--no_cache:禁止源程序cache。默認情況下源程序cache是打開的。

        ·--no_esc:禁止C風格的特殊符號,如“n”、“t”。

        ·--no_exceptions:詳見異常向量表產生一節。

        ·--no_exceptions_unwind:詳見異常向量表產生一節。

        ·--no_hide_all:控制符號的可見性。

        ·--no_regs:告訴編譯器不使用匯編器預定義的寄存器名。

        ·--no_warn:禁止警告信息。

        ·-ofilename:給輸出的目標文件命名。

        ·--predefine“directive”:告訴編譯器預執行SET偽操作。詳見預執行SET偽操作一節。

        ·--split_ldm:詳見LDM和STM指令。

        ·--thumb:告訴編譯器將源文件編譯為符合ARM語法的Thumb指令。此編譯選項和在源文件頭使用THUMB偽操作效果相同。

        ·--unsafe:降低匯編器的警告級別。詳見控制針對信息輸出一節。

        ·--viafile:指示匯編器從指定文件file中讀取各選項信息。

        ·inputfile:為輸入的源程序,必須是ARM或Thumb匯編源程序。

        下面各節詳細介紹以上選項中常用到的選項。

        10.4.1選項說明列表

        在命令行輸入下面的匯編命令,可使匯編器輸出所有可用選項類別。

        armasm–help

        10.4.2過程調用標準AAPCS

        為了使不同編譯器編譯的程序之間能夠相互調用,必須為子程序間的調用規定一定的規則。AAPCS就是這樣一個標準。所謂AAPCS,其英文全稱為ProcedureCallStandardfortheARMArchitecture(AAPCS),即ARM體系結構過程調用標準。它是ABI(ApplicationBinaryInterface(ABI)fortheARMArchitecture(basestandard)[BSABI])標準的一部分。

        可以使用“--apcs”選項告訴編譯器將源代碼編譯成符號AAPCS調用標準的目標代碼。

        注意

        使用“--apcs”選項并不影響代碼的產生,編譯器只是在各段中放置相應的屬性,標識用戶選定的AAPCS屬性。

        與AAPCS相關的編譯/匯編選項有以下幾種。

        ·none:指定輸入文件不使用AAPCS規則。

        ·/interwork:指定輸入文件符合ARM/Thumb交互標準。

        ·/nointerwork:指定輸入文件不能使用ARM/Thumb交互。這是編譯器默認選項。

        ·/ropi:指定輸入文件是位置無關只讀文件。

        ·/noropi:指定輸入文件是非位置無關只讀文件。這是編譯器默認選項。

        ·/pic:同/ropi。

        ·/nopic:同/noropi。

        ·/rwpi:指定輸入文件是位置無關可讀可寫文件。

        ·/norwpi:指定輸入文件是非位置無關可讀可寫文件。

        ·/pid:同/rwpi。

        ·/nopid:同/norwpi。

        ·/fpic:指定輸入文件編譯成位置無關只讀代碼。代碼中地址是FPIC地址。

        ·/swstackcheck:編譯過程中對輸入文件使用堆棧檢測。

        ·/noswstackcheck:編譯過程中對輸入文件不使用堆棧檢測。這是編譯器默認選項。

        ·/swstna:如果對于是否進行數據棧檢查無所謂,而與該連接的其他程序指定了選項/swst或選項/noswst,這時該匯編程序使用選項/swstna。

        10.4.3浮點模式選項

        “--fpmodemodel”選項指定所選的浮點模式。可使用的浮點模式有以下幾種。

        ·ieee_full:所有的浮點操作符號IEEE標準,其中包括單精度浮點操作和雙精度浮點操作。浮點模式可以在使用時動態選擇。使用該選項,編譯器將使用下面的預定義符號。

        __FP_IEEE;

        __FP_FENV_EXCEPTIONS;

        __FP_FENV_ROUNDING;

        __FP_INEXACT_EXCEPTION。

        ·ieee_fixed:符合IEEE標準的浮點運算異常處理規則。使用該選項,編譯器將使用下面的預定義符號。

        __FP_IEEE;

        __FP_FENV_EXCEPTIONS。

        ·ieee_no_fenv:和JAVA兼容的浮點運算算法選擇。預定義的符號為__FP_IEEE。

        ·std:和C和C++兼容的浮點運算算法選擇。這是編譯器默認選項。

        ·fast:快速浮點運算選項。使用該選項將影響浮點運算的精度。

        10.4.4為CPU命名選項

        使用“--cpuname”選項為目標程序使用的CPU命名。其中name的取值為4T、5TE或6T2。編譯器的默認值為ARM7TDMI。

        下面的選項使編譯器列出所有當前可使用的CPU名。

        armasm--cpulist

        10.4.5為FPU命名選項

        選項“--FPU”指定所使用的浮點運算單元的結構。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 嵩明县| 平谷区| 长春市| 阿尔山市| 闽侯县| 壶关县| 昆明市| 秦皇岛市| 辉县市| 哈密市| 溧水县| 扶沟县| 兴宁市| 新津县| 雅江县| 军事| 夏河县| 屏边| 呼图壁县| 城固县| 内江市| 崇仁县| 曲阜市| 新干县| 宣武区| 左贡县| 溆浦县| 林甸县| 阜康市| 德庆县| 大埔区| 象山县| 共和县| 塔河县| 观塘区| 土默特右旗| 神池县| 岳西县| 钟山县| 府谷县| 喀喇|