嵌入式爱好者

查看: 9808|回复: 6

sub sp,sp,#4 ;启动代码如何理解

[复制链接]
it1988 该用户已被删除
发表于 2010-7-28 22:25:32 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

29

主题

9048

帖子

5593

积分

发表于 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 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

7131

帖子

0

积分

发表于 2010-10-24 09:13:04 | 显示全部楼层
cpsr
回复 支持 反对

使用道具 举报

yaogang 该用户已被删除
发表于 2010-10-24 15:10:36 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

it1988 该用户已被删除
 楼主| 发表于 2010-10-24 21:36:29 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

1

帖子

1

积分

发表于 2010-12-9 21:06:16 | 显示全部楼层
我觉得以上都回答错了。请看一下我画的这个图
H|------|       H|------|          H|------|       H|------|          H|------|
  |/ / /  |         |/ / /  |            |/ / / |           |/ / / |             |/ / / |
  |------|<--sp |------|            |------|          |------|            |------|<--sp
L|        |         |------|<--sp  L|------|          |-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
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-6-29 11:39

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表