鉴于我们有必要对struct Env和struct Trapframe 这两个用户环境的关键结构体有个细致的了解,这篇博文应运而生。主要借鉴张弛的report。(内联汇编参见 http://grid.hust.edu.cn/zyshao/OSEngineering.htm 第二章)
首先是 Env 结构体:
inc/env.h
这其中的 env_tf 存储了各寄存器内容
inc/trap.h
其他的都很好理解,某些padding开头的变量是为了让数据补齐4Byte,因为寄存器都是32比特的。
Trapframe保存的都是一些系统关键的寄存器。这里我们只需要特别关注4个寄存器,涉及到程序执行的控制流问题: