gcc - 我可以使用“no_caller_saved_registers”或“interrupt”属性来编写任务切换过程吗?
问题描述
嗨,我是 x86_64 内核的学习者,并试图按照一本初学者的书来写一个简单的。
在任务切换章节中,作者使用汇编来推送和弹出执行寄存器。但是,我使用的是较新的 gcc,它确实具有“no_caller_saved_registers”和“interrupt”选项。
我测试了该属性,并以某种方式发现而不是推送所有寄存器,它只会根据函数中的代码保存其中的几个。
所以我想问如果我jmp或者retq切换任务,编译器会不会聪明到可以保存所有相关的寄存器??
谢谢
解决方案
推荐阅读
- tensorflow2.0 - 使用损失`binary_crossentropy`时。这种损失期望目标具有与输出相同的形状
- sql - Bigquery Full Join ON 多个条件
- php - 我无法使用此代码记录我的应用程序的第一个用户的原因可能是什么
- android - 55" 巨型显示器的 android 资产大小和 dpi
- javascript - 删除 Google App Script 中数组中的特定空项
- javascript - 在任何组件被渲染后有一个 useEffect 钩子
- php - 如何字符串替换忽略另一个字符串中的字符串
- reactjs - 我该如何解决这个问题,我的登录页面无法连接,并且我不断收到此错误
- ag-grid - 自动滚动通过 ag-grid 未固定的行正在工作,但我需要这个 plunkr 在它到达底部时循环
- html - 所有 div 根据父级中的最大 div 大小更改位置