《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > ARM匯編語言中的符號

ARM匯編語言中的符號

2017-06-22
關鍵詞: 匯編語言

在ARN匯編語言中,符號可代表地址、變量和數(shù)字常量。當符號代表地址時又被稱為標號。標號包含變量、數(shù)字常量、標號和局部標號。

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

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

局部標號以數(shù)字開頭,其他符號都不能以數(shù)字開頭。

符號是區(qū)分大小寫的。

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

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

程序中的符號通常不要與指令助記符或者偽操作同名。

(1)       變量

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

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

(2)       數(shù)字常量

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

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

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

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

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

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

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

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

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

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

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

(3)局部標號

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

局部標號定義的語法格式如下:

N{routname}

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

局部標號引用的語法格式如下:

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

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

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


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