ADR ADRL LDR取位址區別

2021-07-10 12:45:18 字數 867 閱讀 5911

文章**網路文章:

1、adr偽指令--- 小範圍的位址讀取

adr偽指令將基於pc相對偏移的位址值或基於暫存器相對偏移的位址值讀取到暫存器中。

在彙編編譯器編譯源程式時,adr偽指令被編譯器替換成一條合適的指令。通常,編譯器

用一條add指令或sub指令來實現該adr偽指令的功能,若不能用一條指令實現,

則產生錯誤,編譯失敗。

adr偽指令格式 :adr  register, expr

位址表示式expr的取值範圍:

當位址值是位元組對齊時,其取指範圍為: +255  ~ 255b;

當位址值是字對齊時,其取指範圍為:   -1020 ~ 1020b;

2、adrl偽指令----中等範圍的位址讀取

adrl偽指令將基於pc相對偏移的位址值或基於暫存器相對偏移的位址值讀取到暫存器中,

比adr偽指令可以讀取更大範圍的位址。在彙編編譯器編譯源程式時,adrl偽指令

被編譯器替換成兩條合適的指令。若不能用兩條指令實現,則產生錯誤,編譯失敗。

adrl偽指令格式:adrl  register, expr

位址表示式expr的取值範圍:

當位址值是位元組對齊時,其取指範圍為: -64k~64k;

當位址值是字對齊時,其取指範圍為:   -256k~256k;

3、ldr偽指令-----大範圍的位址讀取

ldr偽指令用於載入32位的立即數或乙個位址值到指定暫存器。在彙編編譯源程式時,

ldr偽指令被編譯器替換成一條合適的指令。若載入的常數未超出mov或mvn的範圍,

則使用mov或mvn指令代替該ldr偽指令,否則彙編器將常量放入文字池,

並使用一條程式相對偏移的ldr指令從文字池讀出常量。

引用和取位址區別

乙個是用來傳值的 乙個是用來獲取首位址的 引用 出現在變數宣告語句中位於變數左邊時,表示宣告的是引用.例如 int rf 宣告乙個int型的引用rf.取位址運算子 在給變數賦初值時出現在等號右邊或在執行語句中作為一元運算子出現時 表示取物件的位址.1 引用在賦值 的左邊,而取位址在賦值的右邊,比如 ...

C 中 引用 與取位址 的區別

乙個是用來傳值的 乙個是用來獲取首位址的 引用 出現在變數宣告語句中位於變數左邊時,表示宣告的是引用.例如 int rf 宣告乙個int型的引用rf.取位址運算子 在給變數賦初值時出現在等號右邊或在執行語句中作為一元運算子出現時 表示取物件的位址.在c 中,既有引用又有取位址,好多人對引用和取位址不...

C中引用 與取位址 的區別

乙個是用來傳值的 乙個是用來獲取首位址的,引用運算子 出現在變數宣告語句中位於變數左邊時,表示宣告的是引用.例如 int reference 宣告乙個int型的引用rf.取位址運算子 在給變數賦初值時出現在等號右邊或在執行語句中作為一元運算子出現時,表示取物件的位址.在c 中,既有引用又有取位址,好...