硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2583|回复: 3
收起左侧

[μCOS-III] 中断发生时的手动保存部分寄存器

[复制链接]

4

主题

4

回帖

16

积分

新手上路

积分
16
发表于 2021-3-3 15:26:23 | 显示全部楼层 |阅读模式
    在UCOS-III操作系统中,当任务运行发生中断时需要保存寄存器的值,一部分是自动保存的,另一部分是手动保存的。那手动保存这一步骤是在哪个时间点,在哪个函数里面进行的呢?这是不是意味着在从任务切换到中断的过程里,这中间有一个过程在手动保存部分寄存器值?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2021-3-4 08:54:46 | 显示全部楼层
我们自己手动保存是在PendSV中断里面。

其它中断是编译器做的。
回复

使用道具 举报

4

主题

4

回帖

16

积分

新手上路

积分
16
 楼主| 发表于 2021-3-4 11:38:41 | 显示全部楼层
eric2013 发表于 2021-3-4 08:54
我们自己手动保存是在PendSV中断里面。

其它中断是编译器做的。

编译器做手动保存需要相应的命令吗,还是自动进行判断的呢?
编译器做手动保存的话是将剩余的寄存器全部进行保存呢,还是会自己判断需要保存寄存器的数量?
如果有浮点运算,编译器也会自动判断是否需要保存浮点寄存器和保存的数量吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2021-3-4 11:57:37 | 显示全部楼层
Woodpan 发表于 2021-3-4 11:38
编译器做手动保存需要相应的命令吗,还是自动进行判断的呢?
编译器做手动保存的话是将剩余的寄存器全部 ...

你可以工程编译后,直接看编译器生成的反汇编代码,可以看到他们对中断服务器程序要用到寄存器做了入栈操作(非自动入栈寄存器)。


回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-16 07:38 , Processed in 0.199688 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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