汇编指令的学习2——常用的ARM指令
一、常用ARM指令1:數據處理指令
(1)數據傳輸指令 ?
mov
mvn(源目標按位取反后賦給目標)
(2)算術指令
add sub
rsb adc sbc rsc?
(3)邏輯指令
and orr eor ? ??
bic(位清除指令)bic r0,r1,#0x1f @將r1中的數的bit0~bit4清零后,賦給r0。
(4)比較指令(用來比較兩個寄存器中的數,不加S后綴就可以影響CPSR中的標志位)
cmp cmn tst teq
cmp r0,r1@相當于sub r2, r0, r1
cmn r0,r1@相當于add r0,r1(是否-1,1這種類型?)
tst r0,#0xf@測試bit0~bit3是否為0
(5)乘法指令
mvl mla umull umlal smull smlal
(6)前導零計數clz
二、常用ARM指令2:cpsr訪問指令 ? mrs & msr
(1)mrs用來讀psr,msr用來寫psr
(2)CPSR寄存器比較特殊,需要專門的指令訪問,這就是mrs和msr。
三、常用ARM指令3:跳轉(分支)指令 ?b & bl & bx
(1)b 直接跳轉(就沒打開算返回);
(2)bl branch and link,跳轉前把返回地址放入lr中,以便返回,以便用于函數調用;
(3)bx跳轉同時切換到ARM模式,一般用于異常處理的跳轉。
四、常用ARM指令4:訪存指令 ?ldr/str & ldm/stm & swp
(1)單個字/半字/字節訪問 ldr/str
(2)多字批量訪問 ?ldm/stm
(3)swp r1, r2, [r0] @[r0]寫到r1,r2寫到[r0]
(4)swp r1, r1, [r0]
五、ARM匯編中的立即數
(1)合法立即數與非法立即數
ARM指令都是32位,除了指令標記和操作標記外,本身只能附帶很少位數的立即數。因此立即數有合法和非法之分。
合法立即數:經過任意位數的移位后非零部分可以用8位表示的即為合法立即數。
ldr偽指令可以不用人為去判斷合法(非合法)立即數。
六、常用ARM指令5:軟中斷指令swi(software interrupt)
軟中斷指令用來實現操作系統中系統調用
總結
以上是生活随笔為你收集整理的汇编指令的学习2——常用的ARM指令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu 解决WPS缺少宋体,微软雅
- 下一篇: 计算机逆向工程专业,计算机软件反向工程的