- 論壇徽章:
- 0
|
有如下匯編代碼:(該代碼的作用就是用來計(jì)算stmdf裝載pc值時(shí),他的實(shí)際偏移量,對于非stm/str指令在取pc值時(shí),偏移量固定都是8,但對于stm/str指令在取pc值時(shí),則有可能是8,12或其他值)
1: stmfd sp!, {pc} @ calculate offset of PC stored
ldr r0, [sp], #4 @ by stmfd for this CPU
adr r1, 1b
sub offset, r0, r1
上面代碼中,我一直沒弄明白是第二句匯編代碼,我覺得應(yīng)該是:
ldr r0, [sp], #0
而不是
ldr r0, [sp], #4
因?yàn)閳?zhí)行完:stmfd sp!, {pc}這一句后,sp就是指向保存pc值得單元。
示意如下:
| |<-----high address
| |
----<-----初始化的sp指針位置
|cp|
----<----sp(執(zhí)行完stmfd指令后,sp指針?biāo)傅奈恢茫?br />
| |
| |
請大家?guī)兔纯,我的理解錯(cuò)在哪里呢? |
|