Blitz软件
Blitz是一个软件包,内含一个虚拟机,给操作者提供一个建立操作系统内核的功能
学生将在主机上编辑、编译和链接他们的操作系统内核项目。然后,他们将使用仿真器在虚拟机上执行这些项目。当学生的代码出现错误时,仿真器会显示各种错误信息,学生可以使用仿真器工具进行调试
架构
CPU 采用 RISC 设计,大致仿照 Sun 的 Sparc 架构。 BLITZ 处理器包含 32 个通用整数寄存器,每个寄存器为 32 位。
处理器有两种执行模式,即 “系统模式 “和 “用户模式”。内核代码在系统模式下运行,而应用程序则在用户模式下运行。
BLITZ 机器包括两个输入输出设备。第一个是磁盘。仿真器通过主机上的文件来模拟磁盘。第二个 I/O 设备是终端,仿真器通常将终端输入/输出直接传递到主机的用户界面,这样学生就可以直接与运行中的 BLITZ 代码交互。
该架构还包括一个 “trap “指令,用户程序可以执行该指令。陷阱指令允许用户进程进入内核。
调试器内置于模拟器中,并且是模拟器的组成部分。该模拟器可以在命令行模式下运行,学生可以一次键入一个命令。这些命令可用于调试其 BLITZ 内核代码。
CPU 都在系统模式或用户模式下执行。内核代码在系统模式下执行,而用户级程序在用户模式下执行。任何指令都可以在系统模式下执行,但某些指令是有特权的,因为它们只能在系统模式下执行。特权指令的示例包括更改页表和更改模式本身的指令。
在 BLITZ 架构中,寄存器“r15”指向执行堆栈,该堆栈从较高的内存地址向较低的地址向下增长。
工具
- blitz: The BLITZ virtual machine emulator and debugger虚拟机模拟器和调试器
- asm: The BLITZ assembler汇编器。
汇编器(Assembler)是将汇编语言翻译为机器语言的程序。一般而言,汇编生成的是目标代码,需要经链接器(Linker)生成可执行代码才可以执行。
- lddd: The BLITZ linker链接器
- dumpObj: A tool to examine BLITZ object and executable files检查blitz对象和可执行文件
- diskUtil: A tool to manipulate the initial file system on the emulated BLITZ disk用于操作模拟 BLITZ 磁盘上的初始文件系统的工具
- kpl: The KPL compiler编译器
模拟器Emulator
在 Unix 下运行时,您可以通过在 Unix 提示符下键入“blitz”来启动模拟器。模拟器首先读入 BLITZ 程序并将其加载到内存中。通常,BLITZ 可执行文件称为“a.out”,但也可以指定其他名称。模拟器首先从“a.out”读取数据并将其加载到其内部存储器中。实际上,模拟器首先使用“a.out”文件中的字节初始化 BLITZ 机器的主内存
asm 程序是 BLITZ 汇编程序。它以汇编语言程序为输入,生成一个对象文件
第二个程序(称为 “ldd”)是 BLITZ 连接器。它输入一个或多个对象文件,生成一个名为 “a.out “的可执行文件。
quit 命令(可缩写为 “q”)将终止 BLITZ 模拟器。
go 指令(可缩写为 “g”)用于启动仿真器的执行。一旦开始执行,BLITZ 机器将执行指令,直到检测到错误或 BLITZ 机器执行 “等待 “或 “调试 “指令为止。
在KPL中,以“.h”结尾的文件称为“头文件”,以“.c”结尾的文件称为“代码文件”。每个包(如HelloWorld)都会有头文件和代码文件。HelloWorld包使用系统包。每当HelloWorld使用的包的头文件发生变化时,HelloWorld必须重新编译。但是,如果系统的代码文件发生变化,则不需要重新编译HelloWorld。