色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

          ARM匯編偽指令(1)

          作者: 時間:2016-11-21 來源:網(wǎng)絡 收藏

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

          本文引用地址:http://cafeforensic.com/article/201611/319390.htm

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

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

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

          為一個協(xié)處理器的寄存器定義名稱: CN
          為一個協(xié)處理器定義名稱: 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
          定義協(xié)處理器的寄存器。

          MemSet CN 1;將協(xié)處理器的寄存器1定義為MemSet

          6),CP
          定義協(xié)處理器。

          DivRun CN 5;將協(xié)處理器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,數(shù)據(jù)定義偽指令
          數(shù)據(jù)定義偽指令用于數(shù)據(jù)表定義、文字池定義、數(shù)據(jù)空間分配等。

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

          2)MAP
          用于定義一個結(jié)構化的內(nèi)存表的首地址。

          3)FIELD
          定義結(jié)構化內(nèi)存表中的數(shù)據(jù)域。
          MAP,FIELD僅僅定義數(shù)據(jù)結(jié)構,并不實際分配內(nèi)存單元。

          示例:

          MAP 0x40003000 ;內(nèi)存表的首地址為0x40003000
          count1 FIELD 4;定義數(shù)據(jù)域count1,長度為4字節(jié)
          count2 FIELD 4;定義數(shù)據(jù)域count2,長度為4字節(jié)

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

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

          5)DCB
          分配一段字節(jié)內(nèi)存單元。

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

          7)DCDO

          8)DCFD,DCFDU

          9)DCFS,DCFSU

          10)DCI

          11)DCQ,DCQU

          12)DCW,DCWU

          3,報告?zhèn)沃噶?br />報告?zhèn)沃噶钣糜趨R編報告指示。

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

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




          關鍵詞: ARM匯編偽指

          評論


          技術專區(qū)

          關閉