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

          新聞中心

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

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

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

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

          2.局部變量定義LCLA、LCLL和LCLS

          (1)語法格式

          LCLA、LCLL和LCLS偽指令用于定義一個(gè)程序中的局部變量并將其初始化。其中:

          LCLA用于定義一個(gè)局部的數(shù)字變量并初始化為0。

          LCLL用于定義一個(gè)局部的邏輯變量并初始化為F(假)。

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

          以上三條偽操作用于聲明局部變量,在其作用范圍內(nèi)變量名必須惟一。

          語法格式如下。

          lclx>variable>

          ①gblx>

          取值為LCLA、LCLL、LCLS之一。

          ②variable>

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

          (2)使用說明

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

          (3)示例

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

          LCLATest4 ;聲明一個(gè)局部的數(shù)字變量,變量名為Test4

          Test3SETA0xaa ;將該變量賦值為0xaa

          LCLLTest5 ;聲明一個(gè)局部的邏輯變量,變量名為Test5

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

          LCLSTest6 ;定義一個(gè)局部的字符串變量,變量名為Test6

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

          ②下面的例子定義一個(gè)宏,顯示了局部變量的作用范圍。

          MACRO ;聲明一個(gè)宏

          $labelmessage$a ;宏原型

          LCLSerr ;聲明局部字符串變量

          $label

          INFO0,err:CC::STR:$a

          MEND ;宏結(jié)束,局部變量不再起作用

          3.變量賦值偽操作SETA、SETL和SETS

          (1)語法格式

          偽指令SETA、SETL和SETS用于給一個(gè)已經(jīng)定義的全局變量或局部變量賦值。

          SETA偽操作用于給一個(gè)數(shù)學(xué)變量賦值;

          SETL偽操作用于給一個(gè)邏輯變量賦值;

          SETS偽操作用于給一個(gè)字符串變量賦值;

          語法格式如下。

          Variablesetx>expr

          ①Variable

          變量名為已經(jīng)定義過的全局變量或局部變量,表達(dá)式為將要賦給變量的值。

          ②setx>

          取值為SETA、SETL、SETS之一。

          ③expr

          數(shù)學(xué)、邏輯或字符串表達(dá)式,也就是將要賦予變量的值。

          (2)使用說明

          在向變量賦值前必須先聲明變量。

          也可以在匯編指令中預(yù)定義變量,如:

          Armasm--pdobjectsizeSETAoxff--oobjectfilesourcefile

          (3)示例

          ①為預(yù)先定義的變量賦值。

          LCLATest3 ;聲明一個(gè)局部的數(shù)字變量,變量名為Test3

          Test3SETA0xaa ;將該變量賦值為0xaa

          LCLLTest4 ;聲明一個(gè)局部的邏輯變量,變量名為Test4

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

          LCLSTest6 ;定義一個(gè)局部的字符串變量,變量名為Test6

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

          ②使用變量賦值偽操作,定義一些程序相關(guān)內(nèi)容。

          GBLAversionNumber

          VersionNumber SETA21

          GBLLDebug

          Debug SETL{TRUE}

          GBLS versionString

          VersionString SETSversion1.0

          4.通用寄存器列表定義偽操作RLIST

          (1)語法格式

          RLIST偽操作可用于對一個(gè)通用寄存器列表定義名稱,使用該偽操作定義的名稱可在指令LDM/STM中使用。在LDM/STM指令中,列表中的寄存器訪問次序根據(jù)寄存器的編號(hào)由低到高,與列表中的寄存器排列次序無關(guān)。

          語法格式如下。

          NameRLIST{list-of-registers}

          ①Name

          寄存器列表的名稱。

          注意

          該名稱不能和已經(jīng)定義寄存器或協(xié)處理器名稱相同。

          ②list-of-registers

          通用寄存器列表。列表中的寄存器用“,”隔開,如果是編號(hào)連續(xù)的通用寄存器可以用“-”指定寄存器范圍。具體用法參見程序示例。

          (2)使用說明

          在使用匯編編譯器編譯源文件時(shí),可以使用“-checkreg”選項(xiàng)來指定進(jìn)行寄存器檢查。如果檢測到寄存器列表中的寄存器編號(hào)非升序排列,將給出編譯警告。

          (3)示例

          ①將寄存器列表名稱定義為RegList,可在ARM指令LDM/STM中通過該名稱訪問寄存器列表。

          RegListRLIST{R0-R5,R8,R10};

          ②使用“-”在寄存器列表中,指定寄存器范圍。

          ContextRLIST{r0-r6,r8,r10-r12,r15} ;



          評論


          相關(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); })();