找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2204|回复: 2
收起左侧

关于Cortex-M4内核的中断入栈过程以及栈帧的问题

[复制链接]
回帖奖励 15 黑币 回复本帖可获得 5 黑币奖励! 每人限 1 次
ID:474802 发表于 2021-3-10 21:12 | 显示全部楼层 |阅读模式
本帖最后由 MNwcy 于 2021-3-15 11:04 编辑

在看Cortex-M3和Cortex-M4内核权威指南这本书的时候,发现了“栈帧”这个概念。我从书上理解的是:中断来临后会将内部寄存器以及内部特殊寄存器进行入栈,入栈的寄存器是固定的那几个,反正就是八个字大小(包含浮点寄存器的情况是26个字),但是我在一个stm32f407的带定时器中断的简单例程进debug看了下汇编代码。发现了不管是子函数调用还是跳转到中断服务函数,入栈保存的数据根本就不是权威指南说的8个字或者26个字,而是只入栈要跳转的函数中会被改变的内部寄存器,所以就又不懂“栈帧”了。难道是这里说的“栈帧”仅仅是为了服务RTOS等嵌入式操作系统定义的么?为了能更方便的从栈中提取到自己想要的内部寄存器的值,利用栈帧规定好每个位置保存的是哪个寄存器的值?也就是说自己写的裸机程序编译器只会把需要保存的寄存器保存,不会改变的寄存器直接不保存?
不知道我说的清不清楚,希望懂得老哥们能给小弟答疑解惑!先谢为敬

回复

使用道具 举报

ID:328014 发表于 2021-3-15 22:35 | 显示全部楼层
回复

使用道具 举报

ID:474802 发表于 2021-3-16 09:29 | 显示全部楼层
51hei团团 发表于 2021-3-15 22:35
资料:https://blog.csdn.net/diandianqiqi/article/details/78445398

谢谢分享,弄明白了
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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