fans-rt 任务调度-堆栈切换篇(3)关于cortex-m3堆栈的入栈顺序说明

原创 2015年07月11日 03:33:40

cortex-m3 STM32 MCU支持单条PUSH/POP指令对多个寄存器执行入栈出栈操作,入栈顺序按照寄存器编号的反序进行入栈,不以用户的编码顺序进行入栈(因为操作码以mask值运算),例如:


PUSH {R0-R3}
PUSH {R1, R0, R2, R3}
PUSH {R3, R1, R2, R0}
PUSH {R3, R1-R0}
四种写法的执行结果是完全一致的,指令执行后,堆栈镜像如下:

0x20000000:    R0
0x20000004:    R1
0x20000008:    R2
0x2000000C:    R3
在编写fans-rt的中断入口函数时应特别加以注意。



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

fans-rt 任务调度-堆栈切换篇(4)tiny模型详细分析

优化后的Tiny模型代码: ; ; Copyright(C) 2013-2015, Fans-rt development team. ; ; All rights reserved. ...
  • sevek
  • sevek
  • 2015年07月11日 23:32
  • 258

【怎样在fans-rt上进行开发】1.windows 系统下 gcc 交叉编译环境搭建(cortex-m3)

【相关软件】 1.msys shell 2.arm-none-eabi-gcc for windows 3.Jlink驱动 【安装】 一、msys shell 的安装 1.下载 打开 http://w...
  • sevek
  • sevek
  • 2015年08月16日 15:46
  • 720

3.7 Cortex-M3 的堆栈实现

3.7 Cortex-M3 的堆栈实现 《Cortex-M3 权威指南》,嵌入式处理器开发教程。 Cortex-M3 使用的是“向下生长的满栈”模型。堆栈指针SP 指向最后一个被压入堆栈的32...

uC/OSIII在Cortex-M3的任务切换和中断退出分析

按uC/OSIII书中所讲,普通任务切换和中断进入退出后的任务切换应该是不同的函数,因为普通任务切换时要入栈出栈全部寄存器,而中断进入和退出时处理器会自动入栈出栈一部分寄存器(Cortex-M3 是自...

cortex-m3 栈的8字节对齐

cortex-m3 栈的8字节对齐 一、什么是栈对齐? 栈的字节对齐,实际是指栈顶指针须是某字节的整数倍。因此下边对系统栈与MSP,任务栈与PSP,栈对齐与SP对齐 这三对概念不做区分。另外下...

UCOSII在CORTEX M3上的任务切换汇编代码分析

1.UCOSII的任务切换代码如下:

从第二个函数NVIC_PriorityGroupConfig()中了解Cortex-M3的中断

在第一个函数SystemInit()的下一行,会有常见的另一个函数NVIC_PriorityGroupConfig(NVIC_PriorityGroup_X)(X代表数字1,2,3...)。此函数跟中...

Cortex-M3 操作模式和特权级别

ARM Cortex-M3学习记录:Cortex-M3操作模式和特权级别

更换STM32芯片类型引起keil下载Error Flash download failed-Cortex-M3问题的解决

一、更改启动文件:xxxx.s 文件    把以前芯片对应的启动文件改为现在对应的文件  通常路径为:\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\...

STM32(Cortex-M3)中的中断优先级概念

本篇转自网上,忘了地址,如果原作看到的话,可以留言给我,我会加上出处的,谢谢!   NVIC:Nested Vectored Interrupt Controller   STM32(Cort...
  • kxc0720
  • kxc0720
  • 2013年12月01日 10:26
  • 594
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:fans-rt 任务调度-堆栈切换篇(3)关于cortex-m3堆栈的入栈顺序说明
举报原因:
原因补充:

(最多只允许输入30个字)