<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開(kāi)發(fā)網(wǎng)

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

      ARM匯編語(yǔ)言偽指令

      作者:佚名    文章來(lái)源:本站原創(chuàng)    點(diǎn)擊數(shù):    更新時(shí)間:2008-11-28

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

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

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

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

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

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

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

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

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

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

      .align absexpr1,absexpr2:
      以某種對(duì)齊方式,在未使用的存儲(chǔ)區(qū)域填充值. 第一個(gè)值表示對(duì)齊方式,4, 8,16或32. 第二個(gè)表達(dá)式值表示填充的值.

      2. if...else...endif
      .if
      .else
      .endif: 支持條件預(yù)編譯

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

      5. data
      .data subsection: 說(shuō)明接下來(lái)的定義歸屬于subsection數(shù)據(jù)段.

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

      7. global
      .global symbol: 定義一個(gè)全局符號(hào), 通常是為ld使用.

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

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

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

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

      12 long
      .long expressions: 定義一個(gè)長(zhǎng)整型, 并為之分配空間.

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

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

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

      16. code
      .code [16|32]: 指定指令代碼產(chǎn)生的長(zhǎng)度, 16表示Thumb指令, 32表示ARM指令.

      17. ltorg
      .ltorg: 表示當(dāng)前往下的定義在歸于當(dāng)前段,并為之分配空間.

      4.2 ARM GNU專有符號(hào)
      1. @
      表示注釋從當(dāng)前位置到行尾的字符.

      2. #
      注釋掉一整行.

      3. ;
      新行分隔符.

      4.3 操作碼

      1. NOP
      nop
      空操作, 相當(dāng)于MOV r0, r0

       

       

      2. LDR
      ldr <register> , = <expression>
      相當(dāng)于PC寄存器或其它寄存器的長(zhǎng)轉(zhuǎn)移.

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

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


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

       

      5.1 lds文件說(shuō)明

      5.1.1 主要符號(hào)說(shuō)明

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

      Tags:ARM,匯編語(yǔ)言,偽指令  
      責(zé)任編輯:admin
    4. 上一篇文章:
    5. 下一篇文章:
    6. 請(qǐng)文明參與討論,禁止漫罵攻擊,不要惡意評(píng)論、違禁詞語(yǔ)。 昵稱:
      1分 2分 3分 4分 5分

      還可以輸入 200 個(gè)字
      [ 查看全部 ] 網(wǎng)友評(píng)論
      關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁(yè)面
      下到頁(yè)底
      晶體管查詢
      主站蜘蛛池模板: 婷婷六月久久综合丁香可观看| 一本久道久久综合多人| 国产激情电影综合在线看| 一本一道久久综合狠狠老| 国产综合一区二区| 亚洲日本国产综合高清| 国产精品综合一区二区| 久久青青草原综合伊人| 亚洲 自拍 另类小说综合图区 | 午夜激情影院综合| 久久综合精品国产二区无码| 色婷婷六月亚洲综合香蕉| 亚洲啪啪综合AV一区| 狠狠色丁香久久婷婷综合蜜芽五月 | 亚洲av日韩综合一区久热| 久久综合九色综合97_久久久| 色综合久久一本首久久| 色综合AV综合无码综合网站| 老色鬼久久综合第一| HEYZO无码综合国产精品227| 国产精品国产色综合色| 狠狠综合久久久久综合网| 国产精品天天影视久久综合网| 亚洲国产综合精品中文第一区| 亚洲 自拍 另类小说综合图区| 国产一区二区三区亚洲综合| 亚洲sss综合天堂久久久| 久久综合九色综合97手机观看| 青青热久久综合网伊人| 亚洲综合自拍成人| 伊人情人综合成人久久网小说| 久久综合久久美利坚合众国| 狠狠色狠狠色综合伊人| 亚洲综合激情六月婷婷在线观看| 亚洲国产综合在线| 中文字幕亚洲综合小综合在线| 激情五月激情综合| 亚洲国产成人精品无码久久久久久综合 | 亚洲综合综合在线| 色综合久久久无码中文字幕波多| 综合激情区视频一区视频二区 |