arm指令備註

2021-07-13 06:14:27 字數 490 閱讀 4199

arm指令備註

因為arm指令和thumb指令是2位元組或者4位元組對齊的,一般是16位的thumb指令和32位的arm指令。

如何區別arm指令和thumb指令?

/* 使用arm指令集的情況 */  

if (addr % 4 == 0)   

/* 使用thumb指令集的情況 */  

else  

這是因為arm與thumb之間的狀態切換是通過專用的轉移交換指令bx來實現。bx指令以通用暫存器(r0~r15)為運算元,

通過拷貝rn到pc實現絕對跳轉。bx利用rn暫存器中目的位址值的最後一位判斷跳轉後的狀態,如果為「1」表示跳轉到thumb指令集的函式中,如果為「0」表示跳轉到arm指令集的函式中。而arm指令集的每條指令是32位,即4個位元組,也就是說arm指令的位址肯定是4的倍數,最後兩位必定為「00」。

所以,直接就可以將從符號表中獲得的呼叫位址模4,看是否為0來判斷要修改的函式是用arm指令集還是thumb指令集。

arm指令 ldr指令

ldr指令ldr作為指令 偽指令在arm彙編中。ldr指令格式 ldr 目的暫存器,儲存器位址 ldr r0,r1 將儲存器位址為r1的字資料讀入暫存器r0。ldr r0,r1,r2 將儲存器位址為r1 r2的字資料讀入暫存器r0。ldr r0,r1,8 將儲存器位址為r1 8的字資料讀入暫存器r0...

ARM彙編指令

b或bl指令引起處理器轉移到 子程式名 也就是位址 處開始執行,這兩個指令都是相對跳轉指令。兩者的不同之處在於bl指令在轉移到子程式執行之前,將其下一條指令的位址拷貝到r14 lr,鏈結暫存器 由於bl指令儲存了下條指令的位址,因此使用指令 mov pc lr 即可實現子程式的返回。而b指令則無法實...

ARM指令縮寫

adcadd wihc t arry,包含旗標位元的算術加法指 包含旗標位元的算術加法指 addadd,算術加法指 andlogical and,輯and運算指 bbranch,跳躍指 bicbit clear,位元清除指 blbranch with link with link,包含返回的跳躍指 ...