定址方式分類
定址方式是根據指令中給出的位址碼欄位來實現尋找真實運算元位址的方式。arm
處理器具有
9種基本定址方式。
1.暫存器定址;
2.立即定址;
3.暫存器移位定址;
4.暫存器間接定址;
5.基址定址;
6.多暫存器定址;
7.堆疊定址;
8.塊拷貝定址;
9.相對定址。
1,定址方式分類
——立即定址
立即定址指令中的操作碼字段後面的位址碼部分即是運算元本身,也就是說,資料就包含在指令當中,取出指令也就取出了可以立即使用的運算元(這樣的數稱為立即數)。立即定址指令舉例如下:
subs r0,r0,#1 ;r0減1,結果放入r0,並且影響標誌位
mov r0,#0xff000 ;將立即數0xff000裝入r0暫存器
2,定址方式分類——
暫存器定址
運算元的值在暫存器中,指令中的位址碼字段指出的是暫存器編號,指令執行時直接取出暫存器值來操作。暫存器定址指令舉例如下:
mov r1,r2 ;將r2的值存入r1
sub r0,r1,r2 ;將r1的值減去r2的值,結果儲存到r0
3,定址方式分類——
暫存器移位定址
暫存器移位定址是arm指令集特有的定址方式。當第2個運算元是暫存器移位方式時,第2個暫存器運算元在與第1個運算元結合之前,選擇進行移位操作。暫存器移位定址指令舉例如下:
mov r0,r2,lsl #3 ;r2的值左移3位,結果放入r0, ;即是r0=r2×8
ands r1,r1,r2,lsl r3 ;r2的值左移r3位,然後和r1相 ;「與」操作,結果放入r1
4,定址方式分類——
暫存器間接定址
暫存器間接定址指令中的位址碼給出的是乙個通用暫存器的編號,所需的運算元儲存在暫存器指定位址的儲存單元中,即暫存器為運算元的位址指標。暫存器間接定址指令舉例如下:
ldr r1,[r2] ;將r2指向的儲存單元的資料讀出
;儲存在r1中
swp r1,r1,[r2] ;將暫存器r1的值和r2指定的儲存
;單元的內容交換
5,定址方式分類——
多暫存器定址
多暫存器定址一次可傳送幾個暫存器值,允許一條指令傳送16個暫存器的任何子集或所有暫存器。多暫存器定址指令舉例如下:
ldmia r1!, ;將r1指向的單元中的資料讀出到
;r2~r7、r12中(r1自動加1)
stmia r0!, ;將暫存器r2~r7、r12的值保
;存到r0指向的儲存; 單元中
;(r0自動加1)
6,定址方式分類——
基址定址
基址定址就是將基址暫存器的內容與指令中給出的偏移量相加,形成運算元的有效位址。基址定址用於訪問基址附近的儲存單元,常用於查表、陣列操作、功能部件暫存器訪問等。基址定址指令舉例如下:
ldr r2,[r3,#0x0c] ;讀取r3+0x0c位址上的儲存單元
;的內容,放入r2
str r1,[r0,#-4]! ;先r0=r0-4,然後把r1的值寄存
;到儲存到r0指定的儲存單元
7,定址方式分類——
堆疊定址
堆疊是乙個按特定順序進行訪問的儲存區,操作順序為「後進先出」 堆疊定址是隱含的,它使用乙個專門的暫存器(堆疊指標)指向一塊儲存區域(堆疊),指標所指向的儲存單元即是堆疊的棧頂。儲存器堆疊可分為兩種:
向上生長:向高位址方向生長,稱為遞增堆疊
向下生長:向低位址方向生長,稱為遞減堆疊
堆疊指標指向最後壓入的堆疊的有效資料項,稱為滿堆疊;堆疊指標指向下乙個待壓入資料的空位置,稱為空堆疊。
所以可以組合出四種型別的堆疊方式:
滿遞增:堆疊向上增長,堆疊指標指向內含有效資料項的最高位址。指令如ldmfa、stmfa等;
空遞增:堆疊向上增長,堆疊指標指向堆疊上的第乙個空位置。指令如ldmea、stmea等;
滿遞減:堆疊向下增長,堆疊指標指向內含有效資料項的最低位址。指令如ldmfd、stmfd等;
空遞減:堆疊向下增長,堆疊指標向堆疊下的第乙個空位置。指令如ldmed、stmed等。
8,定址方式分類——
塊拷貝定址
多暫存器傳送指令用於將一塊資料從儲存器的某一位置拷貝到另一位置。 如:
stmia r0!, ;將r1~r7的資料儲存到儲存器中。
;儲存指標在儲存第乙個值之後增加,
;增長方向為向上增長。
stmib r0!, ;將r1~r7的資料儲存到儲存器中。
;儲存指標在儲存第乙個值之前增加,
;增長方向為向上增長。
9,定址方式分類——
相對定址
相對定址是基址定址的一種變通。由程式計數器pc提供基準位址,指令中的位址碼字段作為偏移量,兩者相加後得到的位址即為運算元的有效位址。相對定址指令舉例如下:
bl subr1 ;呼叫到subr1子程式
beq loop ;條件跳轉到loop標號處
...loop mov r6,#1
...subr1 ...
(end)
0 給主人留下些什麼吧!~~
ARM定址方式
arm定址方式定義 處理器根據指令中給出的資訊來找到所需運算元的方式 立即數定址 運算元本身就在指令中給出,只需要取出指令就得到了運算元的方式。運算元稱為立即數 add r0,r0,0x3f r0 r0 3f 第二個數就是運算元,需要用 來作為字首 暫存器定址 運算元存在暫存器中,利用暫存器中的數值...
ARM定址方式
定址方式就是指處理器根據指令中的資訊來找到指令所需的運算元的方式。arm標準彙編中使用分號注釋,gnu彙編使用 注釋 1.立即數定址 是一種特殊的定址方式,運算元就在指令中給出,只要取出指令也就取出了運算元,這個運算元也稱為立即數。add r0,r0,0x3f r0 r0 0x3f在上面這條指令中,...
ARM定址方式
所謂定址方式就是處理器根據指令中給出的位址資訊來尋找實體地址的方式。arm處理器的定址方式 目前arm處理器支援9種定址方式,分別是立即數定址 暫存器定址 暫存器偏移定址 暫存器間接定址 基址變址定址 多暫存器定址 相對定址 堆疊定址和塊拷貝定址。1.立即數定址 也叫立即定址,是一種特殊的定址方式,...