首页 > 解决方案 > 我可以使用“no_caller_saved_registers”或“interrupt”属性来编写任务切换过程吗?

问题描述

嗨,我是 x86_64 内核的学习者,并试图按照一本初学者的书来写一个简单的。

在任务切换章节中,作者使用汇编来推送和弹出执行寄存器。但是,我使用的是较新的 gcc,它确实具有“no_caller_saved_registers”和“interrupt”选项。

我测试了该属性,并以某种方式发现而不是推送所有寄存器,它只会根据函数中的代码保存其中的几个。

所以我想问如果我jmp或者retq切换任务,编译器会不会聪明到可以保存所有相关的寄存器??

谢谢

标签: gccoperating-systeminterrupt-handling

解决方案


推荐阅读