新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM匯編偽指令(1)

        ARM匯編偽指令(1)

        作者: 時間:2016-11-21 來源:網絡 收藏

        ARM匯編程序由機器指令、偽指令和宏指令組成。

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

        1,符號定義偽指令
        符號定義偽指令用于定義ARM匯編程序的變量、對變量進行賦值、定義寄存器名稱。

        全局變量聲明: GBLA,GBLL,GBLS
        局部變量聲明: LCLA,LCLL,LCLS
        變量賦值: SETA,SETL,SETS

        為一個通用寄存器列表定義名稱: RLIST

        為一個協處理器的寄存器定義名稱: CN
        為一個協處理器定義名稱: CP

        為一個VFP寄存器定義名稱: DN,SN
        為一個FPA浮點寄存器定義名稱: FN

        1)GBLA,GBLL,GBLS
        全局變量聲明,作用范圍是包含該變量的源程序。

        GBLA variable ;聲明全局算術變量
        GBLL variable ;聲明全局邏輯變量
        GBLS variable ;聲明全局字符串變量

        示例:
        GBLL codedbg;聲明一個全局邏輯變量
        codedbg SETL {TRUE} ;設置變量為TRUE

        2)LCLA,LCLL,LCLS
        局部變量聲明,用于宏定義的體中。

        示例:

        MACRO;聲明一個宏
        SENDDAT $dat;宏的原型
        LCLA bitno;聲明一個局部算術變量
        ...
        bitno SETA 8;設置變量值為8
        ...
        MEND

        3),SETA,SETL,SETS
        變量賦值偽指令。

        示例:

        GBLS ErrStr
        ...
        ErrStr SETS "No,semaphone"
        ...

        4),RLIST
        為通用寄存器列表定義名稱。

        示例:

        LoReg RLIST {R0-R7};定義寄存器列表LoReg
        ...
        STMFD SP!,LoReg;保存寄存器列表LoReg到堆棧

        5),CN
        定義協處理器的寄存器。

        MemSet CN 1;將協處理器的寄存器1定義為MemSet

        6),CP
        定義協處理器。

        DivRun CN 5;將協處理器5的名稱定義為DivRun

        7),DN,SN
        定義VFP的寄存器。

        cdn DN 1 ;將VFP雙精度寄存器1的名稱定義為cdn
        rex SN 3 ;將VFP單精度寄存器3的名稱定義為rex

        8),FN
        定義FPA浮點寄存器。

        ibq FN 1 ;將浮點寄存器1的名稱定義為ibq

        2,數據定義偽指令
        數據定義偽指令用于數據表定義、文字池定義、數據空間分配等。

        1)LTORG
        用于聲明一個文字池。

        2)MAP
        用于定義一個結構化的內存表的首地址。

        3)FIELD
        定義結構化內存表中的數據域。
        MAP,FIELD僅僅定義數據結構,并不實際分配內存單元。

        示例:

        MAP 0x40003000 ;內存表的首地址為0x40003000
        count1 FIELD 4;定義數據域count1,長度為4字節
        count2 FIELD 4;定義數據域count2,長度為4字節

        LDR R1,count1 ;R1 <- [0x40003000+0x00]
        STR R1,count2 ;將R1的值傳送到[0x40003000+0x04]

        4)SPACE
        用于分配一塊內存單元,并用0初始化。

        5)DCB
        分配一段字節內存單元。

        6)DCD,DCDU
        DCD和DCDU用于分配一段字內存單元,但前者要字對齊,后者不需要。

        7)DCDO

        8)DCFD,DCFDU

        9)DCFS,DCFSU

        10)DCI

        11)DCQ,DCQU

        12)DCW,DCWU

        3,報告偽指令
        報告偽指令用于匯編報告指示。

        1)ASSERT
        用于斷言錯誤。
        ASSERT Top<>Temp ;斷言Top不等于Temp

        2)INFO

        3)OPT

        4)TTL,SUBT

        4,匯編控制偽指令
        匯編控制偽指令用于條件匯編、宏定義、重復匯編控制等。
        IF,ELSE,ENDIF---條件匯編控制
        MACRO,MEND---宏定義
        WHILE,WEND---重復匯編

        5,雜項偽指令
        段定義,入口點設置,包含文件,標號導出,引入聲明等。

        ALIGN邊界對齊
        AREA段定義
        CODE16和CODE32 指令集定義
        END匯編結束
        ENTRY程序入口
        EQU常量定義
        EXPORT和GLORBAL 聲明一個符號可以被其他文件引用
        IMPORT和EXTERN 聲明一個外部符號
        GET和INCLUDE 包含文件
        INCBIN包含不被匯編的文件
        KEEP保留符號表中的局部符號
        NOFP禁止浮點指令
        REQUIRE指示兩段之間的依賴關系
        PEQUIRE8和PRESERVE8 堆棧8字節對準
        RN給特定的寄存器命名
        ROUT標記局部標號使用范圍的界限

        6,ARM偽指令
        ADR,ADRL,LDR,NOP,LDFD,LDFS




        關鍵詞: ARM匯編偽指

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 突泉县| 藁城市| 荔浦县| 襄汾县| 哈巴河县| 呈贡县| 藁城市| 嵊州市| 绥阳县| 凉山| 彭州市| 大厂| 营口市| 微山县| 青海省| 客服| 桐庐县| 抚顺市| 松溪县| 五河县| 清水河县| 梁河县| 南阳市| 吴忠市| 周至县| 靖边县| 井冈山市| 阿合奇县| 汾西县| 于田县| 佳木斯市| 福贡县| 栾城县| 五大连池市| 犍为县| 赤壁市| 资源县| 花垣县| 鱼台县| 灵川县| 三门峡市|