新聞中心

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

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

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

本文引用地址:http://www.butianyuan.cn/article/257006.htm

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

(1)語法格式

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

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

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

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

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

語法格式如下。

lclx>variable>

①gblx>

取值為LCLA、LCLL、LCLS之一。

②variable>

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

(2)使用說明

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

(3)示例

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

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

Test3SETA0xaa ;將該變量賦值為0xaa

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

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

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

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

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

MACRO ;聲明一個宏

$labelmessage$a ;宏原型

LCLSerr ;聲明局部字符串變量

$label

INFO0,err:CC::STR:$a

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

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

(1)語法格式

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

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

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

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

語法格式如下。

Variablesetx>expr

①Variable

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

②setx>

取值為SETA、SETL、SETS之一。

③expr

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

(2)使用說明

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

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

Armasm--pdobjectsizeSETAoxff--oobjectfilesourcefile

(3)示例

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

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

Test3SETA0xaa ;將該變量賦值為0xaa

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

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

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

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

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

GBLAversionNumber

VersionNumber SETA21

GBLLDebug

Debug SETL{TRUE}

GBLS versionString

VersionString SETSversion1.0

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

(1)語法格式

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

語法格式如下。

NameRLIST{list-of-registers}

①Name

寄存器列表的名稱。

注意

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

②list-of-registers

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

(2)使用說明

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

(3)示例

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

RegListRLIST{R0-R5,R8,R10};

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

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



評論


相關(guān)推薦

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

關(guān)閉