你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

cortex-M3的压栈问题

[复制链接]
Jane 提问时间:2018-7-4 10:49 /
我们都知道cortex-m3中断时是硬件自动压栈的,这样可以减少中断响应和恢复时间。中断硬件压栈的寄存器为xPSR, PC, LR, R12, R0-R3,为什么其他寄存器不需要压栈呢?

收藏 评论1 发布时间:2018-7-4 10:49

举报

1个回答
yu0405jie 回答时间:2018-7-4 11:20:55
Cotrex_m3权威指南中有这样一段话:

为啥袒护R0-R3以及R12呢,R4-R11就是下等公民?原来,在ARM上,有一套的C函数调用标准约定(《C/C++ Procedure Call Standard for the ARM Architecture》,AAPCS, Ref5)。个中原因就在它上面:它使得中断服务例程能用C语言编写,编译器优先使用入栈了的寄存器来保存中间结果。当然,如果程序过大也可能要用到R4-R11,此时编译器负责生成代码来push它们。

评分

参与人数 1ST金币 +6 收起 理由
MrJiu + 6 赞一个!

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版