gpt4 book ai didi

assembly - 如何完全挂起处理器?

转载 作者:行者123 更新时间:2023-12-04 09:01:55 25 4
gpt4 key购买 nike

我正在为基于 x86 的 PC 编写一个小型引导加载程序。问题是在执行这些指令后,CPU 以某种方式仍然处于事件状态:

sti
hlt

sti 应该禁用下一条指令的中断
hlt 应该完全停止处理器

由于它们一起使用,我认为它们只会“卡住”计算机。但是当我组装它并将它作为软盘镜像安装在 VirtualBox 中时,我的 CPU 会跳到 100%。

我究竟做错了什么?

最佳答案

我想添加关于 'cli' 的评论,因为我过去曾被它咬过几次。 'cli' 指令不会阻止所有中断——它只会阻止可屏蔽的中断。可以想象,由于不可屏蔽中断 (NMI),系统仍然可以被唤醒。

由于其中一条评论表明计算机已准备好关闭,我希望系统中没有其他线程/进程/任务准备好运行(否则 NMI 可能会导致重新安排)。对于您描述的 NMI 场景不太可能;但是,根据您对出错的偏执程度,您可能希望添加一个循环来防范这种可能性。

sysSuspend:
cli
hlt
jmp sysSuspend

关于assembly - 如何完全挂起处理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3747847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com