我读过,为了根据英特尔的系统编程指南(第3卷第9.9章)暂时关闭分页,我应该先禁用中断,然后再执行其他操作。我可以使用cli轻松禁用可屏蔽中断,但是所有有关禁用NMI的手册都说
NMI中断可以通过外部电路禁用(软件必须保证在模式切换操作期间不会产生异常或中断。)
我在此OSDEV页面上找到了类似于C代码的用于禁用NMI的代码,但我不太明白它的含义。
void NMI_enable() {
outb(0x70, inb(0x70) & 0x7F);
}
void NMI_disable() {
outb(0x70, inb(0x70) | 0x80);
}
Run Code Online (Sandbox Code Playgroud)
感觉代码没有上下文并且在不知道outb和inb函数做什么的情况下是没有意义的。