摘要:
格式化输出 旗标 宽度和精度 占位符 浮点数 参考资料 格式化输出 go使用和C语言类似的格式化输出语法,用的是fmt.Printf函数。 go语言的格式化语法结构如下 // %[旗标][宽度][.精度][\[arg索引\]]动词 "%+8.3[3]f" 旗标 | 旗标 | 效果 | | : : | 阅读全文
摘要:
中断和异常 中断描述符表 中断门和陷阱门的区别 中断流程 参考资料 中断和异常 中断,也叫做异步中断,由外部设备产生可以随时打断当前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"); 可 阅读全文