#cmp
rn - rm(operand)
#tst
logical and
#ldr用法(摘自arm嵌入式系統開發一書)
資料 基址暫存器 示例
mem[base+offset] 基址暫存器加上偏移 ldr r0,[r1,#offset]!
mem[base+offset] 不變 ldr r0,[r1,#offset]
mem[base] 基址暫存器加上偏移 ldr r0,[r1],#offset
#在反彙編中出現如: ldr r3,[pc,#0xc], 這裡的pc為當前pc加8,也即要取的那條指令的位址.
#stmia sp! [r4-r6, lr] @lr為最高位址
push lr
push r6
push r5
push r4
"!"表示本身也要加或減.
#frame pointer之後不會再修改sp
#c++中this指標是存放在r0的,因為c++的第乙個引數就是this指標.
#一般的函式呼叫:
1.儲存r4-r6,lr到sp
2. 為local變數, 分配sp空間.
3.分配完有的sp就是frame pointer
4. func body
5. 恢復r4-r6, lr
6. return to caller
當引數的個數小於等於4個時,
r0-r3用來傳遞引數。
如果大於4個,用堆疊來傳遞引數。
r0用來傳遞返回值。
#在gnu的arm彙編中:
fp(frame pointer) 為r11
ip 為r12
ARM常用的彙編指令及相關拓展
cpu可以直接訪問r0 r15暫存器,但是對於類似gpfcon gpfdat等暫存器需以位址訪問。常用彙編 3 b 跳轉 4 mov move 賦值 如 mov r0,r1 把r1的值賦給r0,r0 r1。若mov r0,0x100,即r0 0x100。5 ldr r0,0x12345678 偽指令...
ARM彙編和內嵌彙編
彙編指令 跳轉指令 b bl blxbx 資料處理指令 mov mvnadd adcsub rsbrsc andor eorbic cmncmp tstteq 狀態暫存器指令 mrs msrldr strldm stmmcr arm和協處理器之間資料交換 mrccond 可選的條件 rd 存放返回狀...
arm 彙編學習
一 暫存器和定址 arm有16個暫存器,r0 r15 pc r15 lr r14 sp r13 ip r12 push sp減少,pop sp增加 1.定址方式 從操作位址尋找運算元的方式 2.arm的定址方式 a 暫存器定址,運算元在暫存器中 b 立即定址,運算元就在指令中 subs r0,r0,...