PA2.3-程序如何在AM上运行

对整个计算机系统(NEMU,ISA,AM,运行时环境,程序)相互联系的个人理解.

本文章为一生一芯教学项目的个人理解,笔者并不能保证其正确,请注意学术诚信
笔者并非计算机科班,内容难免存在错误,如您发现,欢迎与我联系.

计算机是个抽象层:程序如何在计算机上运行

  • AM为程序提供了运行时环境.
  • AM将NEMU的接口做了一层抽象,NEMU是底层的硬件模拟层(处理指令执行、设备交互),而AM在此之上构建软件抽象层.
  • AM和NEMU的运行依赖于宿主环境的运行时环境.

NEMU与AM如何协同工作

NEMU中进行注册内存映射操作,将一块内存映射到NEMU的端口中(MMIO),并设定回调函数,当有对这块内存读写操作时就调用回调函数.在回调函数中使用C语言的API更新对应设备.
AM中对内存进行读写,间接的操控设备.

AM,运行时环境,程序如何协同工作

AM为程序提供了运行时环境,程序通过调用AM提供的IOE接口访问AM中的抽象寄存器并触发回调函数,而AM通过读取抽象寄存器的值对MMIO进行读写.以这种方法程序间接实现对MMIO的读写,控制设备.

程序是个状态机:游戏是如何运行的

  • 初始化:ioe_init初始化IOE,video_init初始化VGA,读取timer的初始值
  • 获取游戏运行时间(时钟)
  • 更新游戏逻辑(TRM)
  • 读取键盘按键(键盘):NONE->下一个状态,Esc->halt,按键->检查是否命中->下一个状态
  • 刷新页面(VGA)

PA2.3-程序如何在AM上运行
http://example.com/2025/02/26/PA2-3-程序如何在AM上运行/
作者
lethe
发布于
2025年2月26日
许可协议