arm彙編相關

2021-05-21 20:48:18 字數 926 閱讀 9402

#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,...