韦东山freertos-反汇编代码

上面是基础的反汇编指令

上面是原c函数

c函数得到的反汇编指令
1。mov指令把1和r4的值分别存到r1和r0寄存器中,
2.执行bl指令,把0x08002a32+4的地址保存到链接寄存器(LR,即 R14 中,然后跳转到0x8002f34地址执行子程序(也就是add函数的开头地址)
3在add函数中
3.1把r0,r1,lr(存的返回地址0x08002a32+4)的值分别从右到左push(压)到栈里,从栈顶顺序往下,此时sp在栈顶的地址变成sp_inital-12,sp一直指向栈顶也就是会不断减小。

r0  <-----sp
r1
lr
3.2,sp,sp,#4此时把sp向上移动4个字节,

        <-----sp

r0 
r1
lr
3.3,再把栈里从sp+4开始的的8个字节的数据也就是r0和r1分别写入到r0和r1寄存器中
 

        <-----sp

r0       <-----sp+4
r1     <-----sp+8
lr


3.4 ,计算 r0=r0+r1,把新的r0的值写入栈顶位置

  r0=r0+r1     <-----sp

r0       <-----sp+4
r1     <-----sp+8
lr
3.5,在 ARM 汇编语言里,POP 指令是出栈操作指令,其功能与 PUSH 指令相反。PUSH 指令用于将寄存器的值压入栈中,而 POP 指令则是从栈中取出数据,并将其存储到指定的寄存器中。

R1<--r0=r0+r1 

R2<--R0

R3<--R1

PC<--LR(及返回地址),pc为程序寄存器,它存储着下一条要执行的指令的地址,会跳转到add函数的下面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值