12 2022 档案
摘要:ip协议 ipv4 头部结构 参考资料 ip协议 ip是tcp/ip协议族中的核心协议。工作在网络层,给上面的icmp,igmp,tcp,udp协议提供服务。ip提供了一种尽力而为,无连接的数据报交付服务。 ipv4使用32位bit来表示一个地址,最多只有40多亿个地址,现在越来越不够用了。所以提出
阅读全文
摘要:格式化输出 旗标 宽度和精度 占位符 浮点数 参考资料 格式化输出 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"); 可
阅读全文
摘要:x86寄存器 标志寄存器 控制寄存器 cr0 cr3 cr4 参考资料 x86寄存器 标志寄存器 标志寄存器eflags,记录了CPU执行指令过程中的一系列状态,这些标志大都由CPU自动设置和修改。 CF:进位标志位。无符号数运算时,运算结果的最高有效位向前有借位或进位。 PF:奇偶标志位。运算结果
阅读全文
摘要:结构定义 操作定义 合并 插入 删除 复杂度分析 代码示例 参考资料 结构定义 斜堆(skew heap)也叫自适应堆(self-adjusting heap),它是左倾堆的一个变种。通常用来实现优先队列,支持插入,删除,合并操作,并且均摊复杂度都为$O(lgn)$。 斜堆在结构上没什么特殊要求,只
阅读全文