歡迎您光臨本站 註冊首頁

ARM彙編語言偽指令

←手機掃碼閱讀     火星人 @ 2014-03-24 , reply:0

ARM彙編語言源程序語句,一般由指令,偽操作,宏指令和偽指令作成.

ARM彙編語言的設計基礎是彙編偽指令,彙編偽操作和宏指令.

偽操作,是ARM彙編語言程序里的一些特殊的指令助記符,其作用主要是為完成彙編程序做各種準備工作,在源程序運行彙編程序處理,而不是在計算機運行期間有機器執行.也就是說,這些偽操作只是彙編過程中起作用,一旦彙編結束,偽操作的使命也就隨之消失.

宏指令,是一段獨立的程序代碼,可以插在程序中,它通過偽操作來定義,宏在被使用之前必須提前定義好,宏之間可以互相調用,也可自己遞歸調用.通過直接書 寫宏名來使用宏.並本具宏指令的格式輸入輸出參數.宏定義本身不產生代碼,只是在調用它時把宏體插入到原程序中.宏與C語言中的子函數形參和實參的調用相 似,調用宏時通過實際的指令來 代替宏體實現相關的一段代碼,但宏的調用與子程序的調用有本質的區別,既宏並不會節省程序的空間,其優點是簡化程序代碼,提高程序的可讀性以及宏內容可以 同步修改.

偽操作,宏指令一般與編譯程序有關,因此ARM彙編語言的偽操作,宏指令在不同的編譯環境下有不同的編寫形式和規則.

偽指令也是ARM彙編語言程序里的特殊助記符,也不在處理器運行期間由機器執行,他們在彙編時將被合適的機器指令代替成ARM或Thumb指令,從而實現真正的指令操作.

目前常用的ARM編譯環境有2種.


1. ADS/SDT IDE:ARM公司開發,使用了CodeWarrior公司的編譯器.

2. 集成了GNU開發工具的IDE開發環境;它由GNU的彙編器as,交叉彙編器gcc和連接器id組成.

ADS編譯環境下的ARM偽操作和宏指令,可參考北航出版社的<
這裡主要講述ARM GNU常用彙編語言

4 ARM GNU常用彙編語言介紹

4.1 ARM GNU常用彙編偽指令介紹
1. abort
.abort: 停止彙編

.align absexpr1,absexpr2:
以某種對齊方式,在未使用的存儲區域填充值. 第一個值表示對齊方式,4, 8,16或32. 第二個表達式值表示填充的值.

2. if...else...endif
.if
.else
.endif: 支持條件預編譯

3. include
.include "file": 包含指定的頭文件, 可以把一個彙編常量定義放在頭文件中.
4. comm
.comm symbol, length:在bss段申請一段命名空間,該段空間的名稱叫symbol, 長度為length. Ld連接器在連接會
為它留出空間.

5. data
.data subsection: 說明接下來的定義歸屬於subsection數據段.

6. equ
.equ symbol, expression: 把某一個符號(symbol)定義成某一個值(expression).該指令並不分配空間.

7. global
.global symbol: 定義一個全局符號, 通常是為ld使用.

8. ascii
.ascii "string": 定義一個字元串並為之分配空間.

9. byte
.byte expressions: 定義一個位元組, 並為之分配空間.

10. short
.short expressions: 定義一個短整型, 並為之分配空間.

11. int
.int expressions: 定義一個整型,並為之分配空間.

12 long
.long expressions: 定義一個長整型, 並為之分配空間.

13 word
.word expressions: 定義一個字,並為之分配空間, 4bytes.

14. macro/endm
.macro: 定義一段宏代碼, .macro表示代碼的開始, .endm表示代碼的結束.

15. req
name .req register name: 為寄存器定義一個別名.

16. code
.code [16|32]: 指定指令代碼產生的長度, 16表示Thumb指令, 32表示ARM指令.

17. ltorg
.ltorg: 表示當前往下的定義在歸於當前段,並為之分配空間.

4.2 ARM GNU專有符號
1. @
表示註釋從當前位置到行尾的字元.

2. #
註釋掉一整行.

3. ;
新行分隔符.

4.3 操作碼

1. NOP
nop
空操作, 相當於MOV r0, r0





2. LDR
ldr , =
相當於PC寄存器或其它寄存器的長轉移.

3.ADR
adr

[火星人 ] ARM彙編語言偽指令已經有563次圍觀

http://coctec.com/docs/linux/show-post-142142.html