摘要:
GRUB如何突破实模式的限制 BIOS与MBR引导机制 BIOS会在启动时,检查逻辑0扇区(即硬盘的第一个扇区)的结尾是否存在标志 0x55, 0xaa,以此判断该扇区是否可引导。按照传统的MBR(Master Boot Record)引导流程,逻辑0扇区包含一个特殊的引导程序。这个程序的任务是检查 阅读全文
摘要:
本文记录了我在设计通用引导程序过程中的思考与实践。从背景出发,分析了传统引导程序依赖软盘启动的局限性,并通过研究IBM BIOS文档发现了设备号保存在DL寄存器中的关键依据。基于此,我设计了一种兼容软盘和硬盘的引导程序,支持标准CHS寻址和扩展LBA读取模式。
引导程序的核心思路包括:
保存设备号以实现跨设备兼容。
分区表解析与FAT文件系统支持,确保灵活加载内核文件。
优化内核加载流程,使内核大小可动态调整,并适配文件管理系统的修改。
通过QEMU+GDB调试,我验证了BIOS中INT 19引导规范的实际表现,并在程序中避免了16位模式寻址范围的限制。然而,在进一步扩展时因误操作遗失部分代码,但整体设计框架得以保留,为后续优化提供了参考基础。 阅读全文
摘要:
反量化 反量化其实很简单,将霍夫曼解码出来的数据乘上对应的量化表就好了 通过当前色度选择出SOF中的Component,其中的Tqi指出了这一色度所需的量化表id Component的结构如下: 名称 长度(bit) 备注 Ci 8 Compoenent的id Hi 4 水平缩放因子 Vi 4 垂直 阅读全文
摘要:
因为霍夫曼编码以bit为单位,长度又不确定,读取时无法区分,JPEG采用了范式霍夫曼编码。 读取并生成霍夫曼表 JPEG中DC系数和AC系数是分别进行编码将霍夫曼表保存在DQT中。 直接上代码解释可能更直接: let mut code = 0usize; let mut length = [0; 1 阅读全文
摘要:
JPEG文件除了图像数据之外,还保存了与图片相关的各种信息,这些信息通过不同类型的TAG存储在文件中。 TAG JPEG通过TAG标记压缩书记之外的信息。所有的TAG都包含一个TAG类型,TAG类型大小为两个字节,位于一个TAG的最前面。TAG类型的第一个字节一定为0xFF 以下是部分常见的TAG类 阅读全文
摘要:
本文介绍了JPEG图像压缩的流程,包括DCT变换、量化、Z字形扫描、系数编码和熵编码等步骤。通过这些步骤,JPEG实现了有损压缩 阅读全文