欧美午夜欧美,台湾成人av,久久av一区,最近看过的日韩成人

電子開發(fā)網(wǎng)

電子開發(fā)網(wǎng)電子設(shè)計 | 電子開發(fā)網(wǎng)Rss 2.0 會員中心 會員注冊
搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 電子開發(fā) >> 嵌入式系統(tǒng) >> ARM >> 正文

ARM匯編語言偽指令

作者:佚名    文章來源:本站原創(chuàng)    點擊數(shù):    更新時間:2008/11/28

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

ARM匯編語言的設(shè)計基礎(chǔ)是匯編偽指令,匯編偽操作和宏指令.

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

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

    偽操作,宏指令一般與編譯程序有關(guān),因此ARM匯編語言的偽操作,宏指令在不同的編譯環(huán)境下有不同的編寫形式和規(guī)則.
   
    偽指令也是ARM匯編語言程序里的特殊助記符,也不在處理器運行期間由機器執(zhí)行,他們在匯編時將被合適的機器指令代替成ARM或Thumb指令,從而實現(xiàn)真正的指令操作.
   
    目前常用的ARM編譯環(huán)境有2種.
 

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

      2.       集成了GNU開發(fā)工具的IDE開發(fā)環(huán)境;它由GNU的匯編器as,交叉匯編器gcc和連接器id組成.

 ADS編譯環(huán)境下的ARM偽操作和宏指令,可參考北航出版社的<<ARM微控制器基礎(chǔ)與實踐》(周立功)

 這里主要講述ARM GNU常用匯編語言
 
4 ARM GNU常用匯編語言介紹

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

.align absexpr1,absexpr2:
以某種對齊方式,在未使用的存儲區(qū)域填充值. 第一個值表示對齊方式,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數(shù)據(jù)段.

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

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

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

9. byte
.byte expressions: 定義一個字節(jié), 并為之分配空間.

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

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

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

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

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

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

16. code
.code [16|32]: 指定指令代碼產(chǎn)生的長度, 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 <register> , = <expression>
相當于PC寄存器或其它寄存器的長轉(zhuǎn)移.

3.ADR
adr <register> <label>
相于PC寄存器或其它寄存器的小范圍轉(zhuǎn)移.

ADRL
adrl <register> <label>
相于PC寄存器或其寄存器的中范圍轉(zhuǎn)移.


5 可執(zhí)行生成說明

 

5.1 lds文件說明

5.1.1 主要符號說明

    1. OUTPUT_FORMAT(bfdname)
    指定輸出可執(zhí)行文件格式.
   
    2. OUTPUT_ARCH(bfdname)
   
    指定輸出可執(zhí)行文件所運行CPU平臺
   
    3. ENTRY(symbol)
    指定可執(zhí)行文件的入口段
   
    5.1.2 段定義說明
    1. 段定義格式
    SECTIONS
    { ...
        段名 :
        {
            內(nèi)容
        }
    ...
    }

Tags:ARM,匯編語言,偽指令  
責任編輯:admin
  • 上一篇文章:
  • 下一篇文章:
  • 請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
    1分 2分 3分 4分 5分

    還可以輸入 200 個字
    [ 查看全部 ] 網(wǎng)友評論
    關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
    返回頂部
    刷新頁面
    下到頁底
    晶體管查詢
    主站蜘蛛池模板: 金秀| 保德县| 新巴尔虎左旗| 东阳市| 剑阁县| 墨玉县| 岳阳市| 海原县| 兰坪| 永春县| 崇礼县| 双鸭山市| 义乌市| 承德县| 兴和县| 察隅县| 巴楚县| 隆安县| 绥中县| 永顺县| 冀州市| 福贡县| 康保县| 如皋市| 于都县| 东光县| 南通市| 襄城县| 镇安县| 凤山县| 安顺市| 仙居县| 宜宾市| 满洲里市| 科尔| 新乡市| 黔江区| 于都县| 江西省| 南康市| 兴和县|