Skip to content

Latest commit

 

History

History
74 lines (32 loc) · 2.08 KB

第四章:Hack Machine language.md

File metadata and controls

74 lines (32 loc) · 2.08 KB

第四章:Hack Machine language

本章内容:了解一台Computer所需要的所有基本部件:CPU,ROM,RAM,I/O deivices。然后完成部件,并且最后搭建成hack computer。

内存地址空间的分布:(在hack computer的架构中,指令内存和数据内存是分割开的)

  • 指令地址空间
  • 数据地址空间

指令类型(只有两种):

  • A- 指令: 地址指令

    • 用法:@value
  • C- 指令: 计算指令

    • 用法: dest = comp ; jump

@value语法:

  • 导致A寄存器的值更新为value
  • 导致被隐式选择的寄存器为M[A](side effect):也就是说M默认为M[A]
  • 该指令还可用于创建变量和标签

C指令各位域详解:

image-20211011190905670

一些预定义的标签:

image-20211011201712082

其中比较重要的有:分支循环

该操作都通过核心的jump指令来完成。

I/O内存映射

我们的RAM是16位的,使用2^{13}*16个位,映射为屏幕的256 * 512个点阵

键盘

预定义宏@KBD代表键盘的占用内存的起始位置,实际上该内存的大小仅为1。

变量的抽象

本质上是在内存中申请了一片区域,然后通过CPU和GPU等进行各种操作。在hack语言中,通过A寄存器指定变量的内存偏移量,然后可以直接通过MM[A]来操作A指向的内存区域,使得其值发生改变。

源码

Mult.asm: 这里

Fill.asm这里