在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3541|回复: 3

[转帖]关于arm的堆栈

[复制链接]
发表于 2005-3-17 19:23:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
LBSALE[1]LBSALE1、堆/栈
  
   我想这里的很多的兄弟同我一样吧,都没有系统的学习过操作系统的理论,不过也许是我估计错误吧,见笑。
   接触微处理,是从简单的8051开始的,那时候的程序写起来同现在有很大的不同。
  尤其在堆栈的处理,其实汇编的堆栈同处理器的支持是直接相关,但是在使用C下的堆栈有些东西就需要特殊处理。
  通常堆栈只是一个集体的名词,堆应该是存放处理器状态,或者程序运行状态的部分,栈应该是用来进行动态内存分配的内存区域malloc(这是C下的理解)
   堆栈通常按照高低地址增长的方向和指针指向的位置划分:
   增长:从低地址向高地址
   递减:从高地址向的地址
  ================
  指针sp位置,如果指向最后存放数据的地址,称为满堆栈
                    如果指向空的地址,成为空堆栈
各种处理器会支持者2*2=4中不同类型的堆栈。
2、关于arm的堆栈:
    arm是risc的机器没有自己的push pop 指令,通常使用stm LDM指令完成压入弹出操作。arm的使用r13=sp ,r14=lR ,r15=pc
   当然在不同的模式下后又不同的影子寄存器,这里的影子是说,他们虽然使用了同样的名称,但是实际的物理地址不是相同的空间,只是认为的做了一些关系的MAP。因为这样可以加速数据的处理。
3、同arm相关的通常是!,S,^这些比较特殊的东西,
   尤其对于LDR指令而言,在使用前偏移地时候就有了!,这同后偏移不同
   前【Rn,Rm,#**】  这种类型是先进行偏移然后加载数据,更具是否!更新Rn
   后【Rn】,Rm,#×× 这是先加载数据,然后进行偏移,一定更新Rn
  S通常是一个时候更新标志,有时候如果存在PC(r15)加载的话,会作为更新cpsr的选项,
^这个用到的时候通常不多。这也是同cpsr,spsr相关的东西。
4流水线
这是因为ARM是3级流水线运行,通常运行的指令是Pc-8也就是说运行的指令不是当前的pc指针值。
5、 异常处理部分:
     异常处理是同模式相关的一个概念,ARM有多种异常,对应不同的模式,但是他们之间不是一一对应的关系。
    返回与否?
     有些异常是不需要返回的,reset
     其他的异常通常是需要返回到以前的状态 abort,但是不同的异常返回的点是不同的。通常异常的时候会保存下一个指令的地址到R14这样,就需要在返回的时候更具需要进行调整你的PC。
    ,返回后通常执后的下一条指令这样使用 movs就足够了
   abort,就需要返回出现问题的那条指令,也就是【R14】-4 了,所以通常使用subs返回。
  
   一些小的理解,希望交流,如有不对之处,请更正。
发表于 2005-3-18 11:51:23 | 显示全部楼层

[转帖]关于arm的堆栈

顶~~~
发表于 2005-4-25 14:54:44 | 显示全部楼层

[转帖]关于arm的堆栈

郁闷这也花了1元,
大哥大概说一下主要意思,框架啊,
否则那么那么多钱给啊。
这些东西很多地方都有了,我还以为有什么经典的见解。
发表于 2012-3-13 09:41:13 | 显示全部楼层
好帖子
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-2-2 05:47 , Processed in 0.026240 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表