ARM学习之-----------机器码计算,此处为arm7
2020-04-28
- 前4位: 31-28 需要查表
- 27~25(101 固定的)
- 24(1或者0;如何具体判断:B:0 /BL:1)
- 偏移地址,计算公式:(目标地址-(指令地址+8))/4
- 加8原因:三级流水线
- 除4:因为指令定长,存储指令个数差,而不是地址差
- 然后将123步骤的地址 | 偏移地址
- 小段存放
- 指令如下
- 根据前三步骤的处 0001 1010 0000 0000 0000 0000 0000 0000 = 0x1A00 0000
- 偏移 = ( 0xB4C85434 - ( 0xB4C853E0 +8 ) ) / 4 = 0x13 ;
- 所以机器码 = 0x13 | 0x1A00 0000 = 0x1A00 0013
- 小端存放 = 13 00 00 1A
- 结果和IDA分析一致,表明计算正确