<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM匯編程序設(shè)計(jì)之:ARM匯編器所支持的偽操作

          ARM匯編程序設(shè)計(jì)之:ARM匯編器所支持的偽操作

          作者: 時(shí)間:2013-09-30 來(lái)源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/257006.htm

          源程序文件(即源文件)有特定的文件格式和語(yǔ)法規(guī)則,可以使用任意文本編輯器編寫程序代碼。一般地,源程序文件名的后綴如表10.1所示。

          表10.1 源程序文件名后綴

          程序

          文件名

          匯編

          *.S

          引入文件

          *.INC

          C程序

          *.C

          頭文件

          *.H

          在一個(gè)項(xiàng)目中,至少要有一個(gè)匯編源文件,可以有多個(gè)匯編源文件或多個(gè)C程序,或者C程序文件和匯編文件兩者的組合。

          ARM匯編語(yǔ)言語(yǔ)句格式如下所示。

          {label}{instruction/directive/pseudo-instruction}{;comment}

          注意

          所有指令均不能頂格寫,要用空格(space)或TAB開頭。

          其中instruction即ARM指令集中的匯編指令。Directive為ARM所支持的。pseudo-instruction為ARM所支持的。下面章節(jié)分別介紹和偽指令。

          10.1ARM所支持的偽操作

          在ARM匯編語(yǔ)言程序里,有一些特殊指令助記符,這些助記符與指令系統(tǒng)的助記符不同,沒有相對(duì)應(yīng)的操作碼,通常稱這些特殊指令助記符為偽操作標(biāo)識(shí)符(directive),它們所完成的操作稱為偽操作。偽操作在源程序中的作用是為完成作各種準(zhǔn)備工作的,這些偽操作僅在匯編過(guò)程中起作用,一旦匯編結(jié)束,偽操作的使命就完成。

          在ARM的中,偽操作主要有、數(shù)據(jù)定義偽操作、匯編控制偽操作、宏指令等。

          10.1.1符號(hào)定義(SymbolDefinition)偽操作

          用于定義ARM中的變量、對(duì)變量賦值以及定義寄存器的別名等操作。常見的有如下幾種。

          ·用于定義全局變量的GBLA、GBLL和GBLS。

          ·用于定義局部變量的LCLA、LCLL和LCLS。

          ·用于對(duì)變量賦值的SETA、SETL、SETS。

          ·為通用寄存器列表定義名稱的RLIST。

          ·為協(xié)處理器寄存器定義別名的CN。

          ·為協(xié)處理器定義別名的CP。

          ·為VFP寄存器定義名稱的DN和SN。

          ·為FPA浮點(diǎn)指針寄存器定義名稱的FPA。

          1.全局變量定義偽操作GBLA、GBLL和GBLS

          (1)語(yǔ)法格式

          GBLA、GBLL和GBLS偽操作用于定義一個(gè)ARM程序中的全局變量并將其初始化。其中:

          GBLA偽操作用于定義一個(gè)全局的數(shù)字變量并初始化為0。

          GBLL偽操作用于定義一個(gè)全局的邏輯變量并初始化為F(假)。

          GBLS偽操作用于定義一個(gè)全局的字符串變量并初始化為空。

          由于以上3條偽指令用于定義全局變量,因此在整個(gè)程序范圍內(nèi)變量名必須惟一。

          語(yǔ)法格式如下。

          gblx>variable>

          ①gblx>

          取值為GBLA、GBLL、GBLS之一。

          ②variable>

          定義的全局變量名,在其作用范圍內(nèi)必須惟一。全局變量的作用范圍為包含該變量的源程序。

          (2)使用說(shuō)明

          如果用這些偽操作重新聲明已經(jīng)聲明過(guò)的變量,變量的值將被初始化成后一次聲明語(yǔ)句中的值。

          (3)示例

          ①使用偽操作聲明全局變量。

          GBLATest1 ;定義一個(gè)全局的數(shù)字變量,變量名為Test1

          Test1SETA0xaa ;將該變量賦值為0xaa

          GBLLTest2 ;定義一個(gè)全局的邏輯變量,變量名為Test2

          Test2SETL{TRUE} ;將該變量賦值為真

          GBLSTest3 ;定義一個(gè)全局的字符串變量,變量名為Test3

          Test3SETSTesting ;將該變量賦值為“Testing”

          ②聲明變量objectsize并設(shè)置其值為0xff,為“SPACE”操作做準(zhǔn)備。

          GBLAobjectsize

          ObjectsizeSETAoxff

          SPACEobjectsize

          ③下面的例子顯示如何使用匯編命令設(shè)置變量的值。具體做法是使用“-pd”選項(xiàng)。

          Armasm-pdobjectsizeSETAoxff-oobjectfilesourcefile


          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();