ARM彙編中的標號使用

2021-06-10 01:07:51 字數 1383 閱讀 1513

參考自:

(1) 標號

在arm 彙編中,標號代表乙個位址,段內標號的位址在彙編時確定,而段外標號的位址值在連線時確定。根據標號的生成方式,可以有以下3 鐘:

基於pc 的標號

基於pc 的標號時位於目標指令前的標號或程式中的資料定義偽指令前的標號,這種標號在彙編時將被處理成pc 值加上或減去乙個數字常量。它常用於表示跳轉指令的目標位址,或者**段中所嵌入的少量資料。

基於暫存器的標號

基於暫存器的標號通常用map 和filed 偽指令定義,也可以用於equ 偽指令定義,這種標號在彙編時被處理成暫存器的值加上或減去乙個數字常量。它常用於訪問位於資料段中的資料。

絕對位址

絕對位址是乙個32 為的數字量,它可以定址的範圍為0~232-1,可以直接定址整個記憶體空間。

(2)區域性標號

區域性標號主要用於區域性範圍**中,在巨集定義也是很有用的。區域性標號是乙個0~99 之間的十進位制數字,可重複定義,區域性標號後面可以緊接乙個通常表示該區域性變數作用範圍的符號。區域性變數的作用範圍為當前段,也可以用偽指令rout 來定義區域性標號的作用範圍。

區域性標號定義格式:n

其中:n 區域性標號,為0~99。

routname 區域性標號作用範圍的名稱,由rout 偽指令定義。

區域性標號引用格式:

% n其中: % 表示區域性標號引用操作。

f 指示編譯器只向前搜尋

b 指示編譯器只向後搜尋

a 指示編譯器搜尋巨集的所有巢狀層次

t 指示編譯器搜尋巨集的當前層

如果f 和b 都沒有指定,則編譯器先向前搜尋,再向後搜尋。如果a 和t 都沒有指定,編譯器搜尋所有從巨集的當前層次到巨集的最高層次,比當前層次的層次不再搜尋。

如果指定了routname,編譯器向前搜尋最近的rout 偽指令,若routname 與該rout偽指令定義的名稱不匹配,編譯器報告錯誤,彙編失敗。

示例如下:

routinta rout

…3routinea

beq%4routinea

bge %3

4routinea

…otherstuff rout

…(3)符號

在arm 彙編中,符號可以代表位址、變數、數字常量。當符號代表位址時又稱為標號,符號就是變數的變數名、數字常量的名稱、標號,符號的命名規則如下:

a. 符號由大小寫字母、數字以及下劃線組成;

b. 除區域性標號以數字開頭外,其它的符號不能以數字開頭;

c. 符號區分大小寫,且所有字元都是有意義的;

d. 符號在其作用域範圍你必須是唯一的;

e. 符號不能與系統內部或系統預定義的符號同名;

f. 符號不要與指令助記符、偽指令同名。

ARM彙編中的標號

arm彙編中的標號 標號 label 是為一組機器指令所起名字,表示程式中的指令或者資料位址的符號。標號可有可無,只有當需要用符號位址來訪問該語句時,才給此語句賦予標號。通過在目標位址的前面放上乙個標號,可以在指令中使用標號來代替直接使用位址。標號是程式目標標誌,總是和某位址相聯絡,供轉移或迴圈指令...

ARM彙編中的標號

1 標號 在arm 彙編中,標號代表乙個位址,段內標號的位址在彙編時確定,而段外標號的位址值在連線時確定。根據標號的生成方式,可以有以下3 鐘 基於pc 的標號 基於pc 的標號時位於目標指令前的標號或程式中的資料定義偽指令前的標號,這種標號在彙編時將被處理成pc 值加上或減去乙個數字常量。它常用於...

ARM彙編中的標號

標號 label 是為一組機器指令所起名字,表示程式中的指令或者資料位址的符號。標號可有可無,只有當需要用符號位址來訪問該語句時,才給此語句賦予標號。通過在目標位址的前面放上乙個標號,可以在指令中使用標號來代替直接使用位址。標號是程式目標標誌,總是和某位址相聯絡,供轉移或迴圈指令控制轉移使用。標號是...