存在 常用 汇编指令 sub start alt 并不会 str 编号
start:
movsp,#4096
blcmain
halt
b8
movip,sp
stmdb sp!,{fp,ip,lr,pc}
sub fp,ip,#4;0x4
sub sp,sp,#80x8
movr3,#14428405760x56000000
addr3,r3,#80;0x50
strr3,[fp,#-16
movr3,#14428405760x56000000
addr3,r3,#84;0x54
strr3,[fp, #-20]
ldrr2,[fp,#-16]
movr3,#256
strr3,[r2]
ldrr2,[fp,#-20]
movr3,#0
strr3,[r2]
movr3,#0
movr0,r3
subsp,fp,#12
ldmiasp,{fp,sp,pc}
解析:
stmdbsp!,{fp,ip,lr,pc}
db含义:decrementbefore先减,后存。
sp‘ = sp -4 = 4092,如果布加感叹号,sp为原值,并不会被减。
高编号寄存器存在高地址,4092到4095存放PC的值,sp‘ = sp - 4 = 4088.
4088到4091存放lr寄存器的值
4084到4087存放ip的值
4080到4083存放fp的值。
stmdb最常用
ldmiasp,{fp,sp,pc}
先读4080到4083的值 = 原来的fp的值低地址对应低编号。
基础汇编指令
来源: http://www.bubuko.com/infodetail-2330385.html