Steel Shadow

「芝士介绍」

编译优化文档

优化文档 代码优化 由于本学期选修了较多课程,后期优化时间有限。 中间代码优化已经被融合在了代码生成部分。 主要进行了后端优化。 临时寄存器分配 我使用了 $t0-$t8 作为临时寄存器池,使用先进先出的规则,为中间代码的临时变量分配临时寄存器。 如果临时寄存器不足,则将该临时变量存储到内存当中。 为保证正确性,临时寄存器池应当至少包含 4 个寄存器。 全局寄存器分配 中间...

编译文档

BUAA 2023 编译器设计 本编译器使用 C++17 书写,中间代码为自行设计的四元式,目标代码生成 MIPS。 目录 BUAA 2023 编译器设计 目录 参考编译器介绍 抽象语法树结构 文件组织 总体介绍 ...

OS 挑战性任务

lab4-challenge 挑战性任务实验报告 实现架构 信号的注册 首先,我在 signal.h 中定义了 struct sigaction 和 sigset_t,以及信号的相关宏定义,包括信号编码 SIGKILL 等,掩码行为 SIG_BLOCK 等,最大信号数量 NSIG。 并且,在 env.h 中,我在进程控制块 PCB中添加了 信号处理器、信号处理入口、信号的进程全局掩码...

OS lab6

lab6 实验报告 思考题 示例代码中,父进程操作管道的写端,子进程操作管道的读端。如果现在想让父进程作为“读者”,代码应当如何修改? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #include <stdio.h>...

OS lab5

思考题 如果通过 kseg0 读写设备,那么对于设备的写入会缓存到 Cache 中。这是一种错误的行为,在实际编写代码的时候这么做会引发不可预知的问题。请思考:这么做这会引发什么问题?对于不同种类的设备(如我们提到的串口设备和 IDE 磁盘)的操作会有差异吗?可以从缓存的性质和缓存更新的策略来考虑。 在串口设备中,是通过物理内存实时响应的。若在串口设备中使用缓存,...

OO Unit3

架构设计 图模型构建和维护策略 我的类 UML 图如下。 由于课程组给出的 interface 中已给出清晰明确的工程结构,这里仅仅介绍我额外添加的内容。 style 由于 MyNetwork 方法过多,行数超过 checkStyle 500行限制,我将一些方法从 MyNetWork 提取出来,放在 style 文件夹中,提取方法中,第一个参数为 MyNetWork this。 ...

OS lab4

思考题 思考并回答下面的问题: 内核在保存现场的时候是如何避免破坏通用寄存器的? 进入内核态后,使用 SAVE_ALL (include/stackframe.h) 将原 sp 保存在 k0 中,再为 sp 赋为 KSTACKTOP。 将 k0(保存着原 sp)保存至 KSTACKTOP正确位置,将其余通用寄存...

LaTeX 学习摘要

占个坑 2024.1.9 \(\LaTeX\)

ssh连接虚拟机

引言 记录自己使用 ssh 登录 vmware 虚拟机的过程。 理论上可以连接任意远程服务器,此处仅使用虚拟机作为尝试。 本地机ssh配置 ~\.ssh\config 末尾添加 1 2 3 4 5 # 虚拟机ssh连接 Host vm HostName *.*.*.* 这里是远程端/虚拟机的ip地址 Port 22 User 这里是远程端的用户名 远程机...

OS lab3

谨记第一次exam爆零(课下不能有bug)

思考题 Thinking 3.1 请结合 MOS 中的页目录自映射应用解释代码中 e->env_pgdir[PDX(UVPT)] = PADDR(e->env_pgdir) | PTE_V 的含义。 UVPT 是该用户进程 e 的页表虚拟基地址,采用自映射方法,(进程 e 的)页表的第 PDX(UVPT) 个页目录项映射到进程 e 自身页目录的物理地...