在bootloader中启动前的cli

kim*_*yun 3 x86 assembly bootloader

我在网上冲浪时发现了512字节的os竞赛.

一切都安装在bootsector中.

在阅读了一些源文件后,

我发现cli在开始例程之前总会有指令.(在组装中)

use16
org 7c00h
jmp 0:start
start:
  cli
  do something here..(this section sometimes include int 10h)
Run Code Online (Sandbox Code Playgroud)

我想知道的是

  1. 为什么cli在开始常规之前是必要的

  2. 之后cli,有时候,他们会使用中断!就像int 10h我想知道为什么他们cli会在正常情况下使用中断?

Bre*_*dan 6

1)在引导扇区初始化之前(或之内)必要的唯一情况cli是引导扇区可能在8086上运行.对于后来的CPU加载导致中断被禁用(推迟)直到下一条指令,这足够长到加载并获取有效的潜在IRQ处理程序以供使用.ssspss:sp

2)软件中断(例如int 0x10)不是IRQ,并且不被禁用cli.为了避免弄乱IRQ,sti很快就会做一个很正常的事情cli.当你试图用512字节来挤压一些东西时,做一些没有理智的程序员会考虑允许的愚蠢的事情是正常的(比如让中断禁用)只是为了挤压一个额外的代码字节.