it1988 发表于 2010-7-28 22:25:32

飞凌-fatfish 发表于 2010-7-29 08:29:06

SUB : 减法
(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)

减法可以在有符号和无符号数上进行。

网络资源,可以参考一下。

it1988 发表于 2010-10-23 22:58:25

飞凌-alexlee 发表于 2010-10-24 09:13:04

cpsr

yaogang 发表于 2010-10-24 15:10:36

it1988 发表于 2010-10-24 21:36:29

zengkai126 发表于 2010-12-9 21:06:16

我觉得以上都回答错了。请看一下我画的这个图
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]
查看完整版本: sub sp,sp,#4 ;启动代码如何理解