随笔分类 - 操作系统
摘要:中断和异常 中断描述符表 中断门和陷阱门的区别 中断流程 参考资料 中断和异常 中断,也叫做异步中断,由外部设备产生可以随时打断当前CPU的执行流程。通常分为。 可屏蔽中断:由IO设备产生的IRQ中断。这类中断可以通过将%eflags寄存器中的IF标志置为0来屏蔽。 不可屏蔽中断:比如内存不对齐,断
阅读全文
摘要:可编程中断控制器 8259A 8259A内部寄存器 ICW1寄存器 ICW2寄存器 ICW3寄存器 ICW4寄存器 OCW1寄存器 OCW2寄存器 OCW3寄存器 参考资料 可编程中断控制器 在x86中,外部设备产生的中断信号并不会直接通过INTR发给CPU,而是先发送给可编程中断控制器(PIC P
阅读全文
摘要:字符模式显卡驱动 显存数据结构 游标位置 写字符 参考资料 字符模式显卡驱动 在物理内存低1MB地区,有显示适配器缓存的内存空间,可以直接通过改写缓存来改变显示内容。 所有在PC上工作的显卡,在加电初始化之后都会自动初始化到80*25的文本模式。上图中的CGA/EGA+ Chroma Text Vi
阅读全文
摘要:x86实模式物理内存布局 参考资料 x86实模式物理内存布局 在x86启动后,运行BIOS,此时就是实模式(8086模式)运行。此时可用的物理内存只有0x00000-0xFFFFF这1MB的空间。 这1MB空间要分给BIOS和设备的内存映射IO等。实际的布局如下。 | 起始地址 | 大小 | 用途
阅读全文
摘要:物理内存布局探测 e820方式 参考资料 物理内存布局探测 计算机启动后,需要知道当前机器上实际的物理内存布局。一般是通过BIOS的INT 15中断来获取,根据参数(%eax)的不同,分为三种方式:0xe820,0x801和0x88。 e820方式 e820方式用内存范围描述符(Address Ra
阅读全文
摘要:实模式下的分段机制 保护模式下的分段机制 参考资料 实模式下的分段机制 也就是8086的16位模式,16位的段寄存器左移4位(变为20位大小)作为段基址,再加上相应的段偏移值就得到了最终的地址。 比如对于代码段(code segment),计算%cs<<4+%ip就是当前实际要寻址的代码地址。 保护
阅读全文
摘要:基本内联汇编 扩展内联汇编 常用限制符 常用clobber list 参考资料 基本内联汇编 基本内联汇编的语法很简单,实现的功能也很简单,就是直接将汇编语句插入到编译后的C代码中。基本形式如下。 asm("assembly code"); 例如。 asm("nop"); asm("cli"); 可
阅读全文
摘要:x86寄存器 标志寄存器 控制寄存器 cr0 cr3 cr4 参考资料 x86寄存器 标志寄存器 标志寄存器eflags,记录了CPU执行指令过程中的一系列状态,这些标志大都由CPU自动设置和修改。 CF:进位标志位。无符号数运算时,运算结果的最高有效位向前有借位或进位。 PF:奇偶标志位。运算结果
阅读全文
摘要:x86汇编 数据格式 寻址模式 数据传送指令 MOV类 MOVZ和MOVS类 压入和弹出栈指令 算术和逻辑操作指令 加载有效地址指令 位移指令 特殊算术操作指令 控制相关指令 条件码 设置指令 跳转指令 用条件控制实现分支语句(if) 条件传送指令实现三元运算符 用条件控制实现循环语句 用条件控制实
阅读全文