《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 解決方案 > ARM匯編語(yǔ)言中的符號(hào)

ARM匯編語(yǔ)言中的符號(hào)

2017-06-22
關(guān)鍵詞: 匯編語(yǔ)言

在ARN匯編語(yǔ)言中,,符號(hào)可代表地址,、變量和數(shù)字常量,。當(dāng)符號(hào)代表地址時(shí)又被稱為標(biāo)號(hào),。標(biāo)號(hào)包含變量、數(shù)字常量,、標(biāo)號(hào)和局部標(biāo)號(hào),。

符號(hào)的命名規(guī)則如下:

符號(hào)由大小寫字母、數(shù)字以及下劃線組成,。

局部標(biāo)號(hào)以數(shù)字開(kāi)頭,,其他符號(hào)都不能以數(shù)字開(kāi)頭。

符號(hào)是區(qū)分大小寫的,。

符號(hào)中在其作用范圍內(nèi)必須惟一,,即在其作用范圍內(nèi)不可有同名的符號(hào)。

程序中的符號(hào)不能與系統(tǒng)內(nèi)部變量或者系統(tǒng)預(yù)定義的符號(hào)同名,。

程序中的符號(hào)通常不要與指令助記符或者偽操作同名,。

(1)       變量

在ARM匯編語(yǔ)言中,變量有數(shù)字變量,、邏輯變量和串變量3種類型,。變量的類型在程序中是不能改變的。數(shù)字變量的取值范圍為數(shù)字常量的數(shù)字表達(dá)式所能表示的數(shù)值范圍,。關(guān)于數(shù)字常量和數(shù)字表達(dá)式所能表示的數(shù)值范圍,。邏輯變量的取值為{ture}和{false}。串變量的取值范圍為串表達(dá)式可表示的范圍,。

在ARM匯編語(yǔ)言中,,使用GBLA、GBLL及GBLS偽操作聲明全局變量,;使用LCLA,、LCLL及LCLS偽操作聲明局部變量;使用SETA,、SETL及SETS偽操作為這些變量賦值,。

(2)       數(shù)字常量

數(shù)字常量一般由3種表示方式:

十進(jìn)制數(shù),如43,、6,、112等。

十六進(jìn)制數(shù),,如0x3425,、0xFE、0x1等,。

n進(jìn)制數(shù),,用n_XXX表示,其中n為2~9,,XXX為具體數(shù),,如2_01001101、8_4326等,。

若數(shù)字常量時(shí)32位整數(shù),,當(dāng)做為無(wú)符號(hào)整數(shù)時(shí),其取值范圍為0~2的32次冪-1,;當(dāng)作為有符號(hào)整數(shù)時(shí),,其取值范圍為-2的31次冪~2的31次冪-1.匯編編譯器并不區(qū)分一個(gè)數(shù)是無(wú)符號(hào)的還是有符號(hào)的,事實(shí)上,,,,-n與2的32次冪-n在內(nèi)存中是同一個(gè)數(shù)。

在ARM匯編語(yǔ)言中,,使用EQU偽操作來(lái)定義數(shù)字常量,。

注意:數(shù)字常量一經(jīng)定義,其數(shù)值就不能再修改,。

在ARM匯編語(yǔ)言中,,標(biāo)號(hào)是表示程序中的指令或數(shù)據(jù)地址的符號(hào),一般它代表一個(gè)地址,。根據(jù)標(biāo)號(hào)的生成方式可有以下3種,,即

基于PC的標(biāo)號(hào):是位于目標(biāo)指令前或程序中數(shù)據(jù)定義偽操作前的標(biāo)號(hào),在匯編時(shí)將被處理成PC值加上一個(gè)數(shù)字常量,。它常用于表示跳轉(zhuǎn)指令的目標(biāo)地址,,或者代碼段中所嵌入的少量數(shù)據(jù)。

基于寄存器的標(biāo)號(hào):通常用MAP和FILED偽操作定義該標(biāo)號(hào),,也可用EQU偽操作定義,。這種標(biāo)號(hào)在匯編時(shí)將被處理成寄存器的值加上一個(gè)數(shù)字常量。它常用于訪問(wèn)位于數(shù)據(jù)段中的數(shù)據(jù),。

絕對(duì)地址:是一個(gè)32位的數(shù)字量,,尋址的范圍為0~2的32次冪-1,即直接可尋址整個(gè)內(nèi)存空間,。

(3)局部標(biāo)號(hào)

局部標(biāo)號(hào)主要用于局部范圍代碼,。它由一個(gè)0~99數(shù)字和一個(gè)通常表示該局部標(biāo)號(hào)作用范圍的標(biāo)號(hào)組成,可重復(fù)定義,。局部標(biāo)號(hào)的作用范圍通常為當(dāng)前段,,也可用偽操作ROUT表定義局部標(biāo)號(hào)的作用范圍。

局部標(biāo)號(hào)定義的語(yǔ)法格式如下:

N{routname}

其中:N為0~99數(shù)字,;routname為符號(hào),,通常為該標(biāo)號(hào)作用范圍的名稱,。

局部標(biāo)號(hào)引用的語(yǔ)法格式如下:

%{F|B}{A|T}      N{routname}

其中:%表示引用操作;F指示編譯器只向前搜索,;B指示編譯器只向后搜索,;A指示編譯器搜索宏的所有嵌套層次;T指示編譯器搜索宏的當(dāng)前層次,。

如果F和B都沒(méi)有指定,,則編譯器先向前搜索,再向后搜索,;如果A和T都沒(méi)有指定,,則編譯器搜索所有從當(dāng)前層次到宏的最高層次,比當(dāng)前層次低的層次不再搜索,。如果指定了routname,,則編譯器向前搜索最近的ROUT偽操作;若routname與該ROUT偽操作定義的名稱不匹配,,則編譯器你報(bào)告錯(cuò)誤,,匯編失敗。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。