關於ARM彙編中的標號的學習

2021-06-06 13:43:26 字數 1485 閱讀 8957

標號的定義

就是位址的表示符號,標號的操作,就相當於對其所表示的位址的操作。

內部屬性(編譯時):段屬性(屬於哪個段),

偏移量屬性(相對於本段首位址的偏移量,16位無符號整數,單位位元組),

型別屬性(標號和轉移指令所處位置之間的距離

short------段內,-128---127

near--------段內,-32768~ 32767

far  ---段外)

標號可以標示程式**段的首位址(常用在指令前),

也可以用於標示資料段的首位址(常用在處處理資料的偽**前)。

例如:程式**段的標號

code_mark  

mov  r0,r2

資料**段的標號

data_mark1   dcw  12

map    0x100

data_mark2  field 256

標號的分類

1。 基於計數器pc偏移量的標號------通常是表示**段的標號。

作用範圍 :整個本原始檔

對這些標號的操作的一些指令有

跳轉指令   如 b  code_mark

裝載偽指令     adr  r0,code_mark

注意: (1)偽指令ldr 並不是基於pc的 如 ldr  r0,=code_mark ,

它的執行順序是,首先判斷是否可用mov進行操作,如果運算元不符合mov操作

的規則,則ldr 文字池的操作。進行絕對位址的定址

(2)指令ldr  r0,code_mark 作用是將code_mark表示的位址中的內容

裝載到r0中。

2。基於暫存器的標號----------通常是對資料處理的偽**前的標號。在彙編處理時,將暫存器的值

加上或者減去該標號,以達到的資料的訪問 如(正確與否存有疑問!!!有待解決)

作用範圍:本原始檔

add  r0,r0,a

map  0x100

a  field  256

b field   256

3。絕對位址  是乙個32位的數字量,可以用來定址整個記憶體空間,當程式計數器pc賦值時,可以

實現程式跳轉。

作用範圍:本原始檔

ldr  pc,=0x30000000

3。區域性標號 0~99的十進位制數字

作用範圍:當前段內

引用格式 %  n    注:b----搜尋範圍往後backward,f------搜尋範圍向前forward

n----區域性標號

0      

cmp  ....    

add 。。。

b  %b0

b  %f1

ldr ....

另  對本原始檔外部標號的引入 import  x(外部標號)

對本原始檔中的標號設定為可匯出  export  y(本原始檔中的標號)

參考文獻:

《arm處理機裸機開發實踐》-------王小強 等

ARM彙編中的標號

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

ARM彙編中的標號

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

ARM彙編中的標號

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