摘要: 进入内核以后,应该做些什么呢?本章将实现一个最容易看到效果的模块:显卡驱动。 6.1 什么是驱动 驱动这个词听起来很高大上,但实际上很简单,就是硬件的接口函数。在软件工程中,可以使用接口封装和简化设计,硬件也是一样。例如:想要读硬盘,需要很多指令设定好几个端口,然后等待硬盘就绪,最后才能读硬盘。这一 阅读全文
posted @ 2023-11-12 09:47 樱雨楼 阅读(136) 评论(4) 推荐(0) 编辑
摘要: 一直以来,我们都在使用汇编语言对MBR编程,但对于操作系统这样的复杂程序来说,使用汇编语言是比较困难的。本章将实现操作系统内核的加载与进入。 5.1 读硬盘的实现原理 操作系统存储于硬盘中,现在需要将其读出至内存。想要读硬盘,就需要依次进行以下操作: 设定读取的扇区数 设定起始扇区号 发送读硬盘命令 阅读全文
posted @ 2023-11-12 09:47 樱雨楼 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 4.1 什么是分页模式 让我们以这幅图开始本章的内容: 这是一段内存,每格为1字节,阴影部分的内存被占用。此时,如果向内存中加载一个4字节的程序,显然是做不到的。然而,此时的空闲内存其实是够4字节的,纯粹是因为其不连续,导致了这样的结果。看来,问题的关键在于内存连续。如果有一种办法能让内存不连续,问 阅读全文
posted @ 2023-11-12 09:47 樱雨楼 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 实模式下,内存的访问是没有任何限制的,任何程序都能访问和修改任何内存地址,这就导致了实模式下的程序,甚至操作系统自己,都可能自身难保。于是,自8086的下一代产品80286起,保护模式诞生了;进一步的,自80386起,32位保护模式诞生了。 3.1 内存为什么要分段 在学习保护模式之前,需要先讨论一 阅读全文
posted @ 2023-11-12 09:45 樱雨楼 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 2.1 BIOS 当按下开机键的那一刻,发生了什么呢? 这是一个百废待兴的时刻,所有的硬件设备都刚启动,并没有做好准备,甚至连CPU自己都是。此时,就需要一些外力帮助CPU工作起来。具体来说,在CPU刚启动时,其CS:IP被硬件电路设定为f000:fff0。这个地址并非指向内存,而是指向主板的一个非 阅读全文
posted @ 2023-11-12 09:45 樱雨楼 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 1.1 引言 什么是操作系统呢? 有些读者可能会像曾经的笔者一样,认为操作系统是"一种图形界面";在学习了Linux操作系统后,认为操作系统也可以是"一种命令行"。而不同种类,不同版本的操作系统,则是"不同的图形界面",或是"不同的命令行语法"。 那么,以Linux操作系统为例,读者是否想过这些问题 阅读全文
posted @ 2023-11-12 09:45 樱雨楼 阅读(73) 评论(0) 推荐(1) 编辑
摘要: 第1章 引言 傅里叶变换(Fourier Transform)是由数学家傅里叶提出的一套对函数进行变换的方法,其主要分为连续傅里叶变换(Continuous Fourier Transform,CFT)和离散傅里叶变换(Discrete Fourier Transform,DFT)两种,在本文中,我 阅读全文
posted @ 2023-02-20 20:19 樱雨楼 阅读(1371) 评论(11) 推荐(8) 编辑
摘要: 经过漫长的旅途,我们的编译期实现之旅终于到达了终点。感慨之余,就让我们最后一次共同回顾与展望这段遥远的旅程吧。 1. 回顾与展望 在编译器实现之旅的最初几章中,我们手写了一个针对CMM语言的词法分析器。实际上,我们使用的是一种被称为"手工编码的词法分析器"的实现方案。词法分析器实际上是具有通过程序进 阅读全文
posted @ 2021-02-19 16:54 樱雨楼 阅读(246) 评论(1) 推荐(0) 编辑
摘要: 在上一章的旅程中,我们已经实现了函数调用的代码生成器分派函数,但在上一章的末尾,我们留下了三个问题: 我们需要为全局变量压栈 main函数需要在程序启动时被自动调用 我们需要实现一个链接器,以将所有的CALL伪指令转变为一条真正的CALL指令 所以,在这一章的旅程中,我们就将解决这三个遗留问题,为代 阅读全文
posted @ 2021-02-19 16:53 樱雨楼 阅读(170) 评论(2) 推荐(0) 编辑
摘要: 在前面几个章节的旅程中,我们实现了一些各有特点的代码生成器分派函数,而在这一章的旅程中,我们将迎来整个代码生成器,乃至整个编译器实现之旅的重头戏:函数调用的实现。现在,就让我们开始吧。 1. 函数调用概观 函数调用是一个复杂的过程,从代码生成器层面看,其涉及到符号表以及多个与之相关的分派函数,此外, 阅读全文
posted @ 2021-02-19 16:51 樱雨楼 阅读(247) 评论(0) 推荐(0) 编辑