(Subtraction)
SUB{条件}{S}<dest>, <op 1>, <op 2>
dest = op_1 - op_2
SUB 用操作数 one 减去操作数 two,把结果放置到目的寄存器中。操作数 1 是一个寄存器,操作数 2 可以是一个寄存器,被移位的寄存器,或一个立即值:
SUB R0, R1, R2 ; R0 = R1 - R2
SUB R0, R1, #256 ; R0 = R1 - 256
SUB R0, R2, R3,LSL#1 ; R0 = R2 - (R3 << 1)
减法可以在有符号和无符号数上进行。
网络资源,可以参考一下。 cpsr 我觉得以上都回答错了。请看一下我画的这个图
H|------| H|------| H|------| H|------| H|------|
|/ / /| |/ / /| |/ / / | |/ / / | |/ / / |
|------|<--sp |------| |------| |------| |------|<--sp
L| | |------|<--spL|------| |-isr--| |------|isr==>pc
| | | | |--r0--|<--sp|---r0-|<--sp L|------|r0==>r0
(0) (1) (2) (3) (4)
sdmfd对sp先减,再入栈;而对应的ldmfd先出栈,后减sp,这才是问题关键所在。至于当程序调用之前是否用BL保存了pc,如果是那么想根本就想不通,sub sp,sp,#4只能对sp指针操作,并不是该sp所保存的pc的值做减4
页:
[1]