目录

Machine Language

Week 4 notes


Overview

Compilcation

Mnemonics

为了更方便的讨论机器语言,人们通常将指定的代码段与相应的含义(Mnemonic Form)对应起来。下面的例子中,ADD 就是 0100010 对应的 Mnemonic Form。可以观察到的是,这种替代不仅可以代表 operation,也可以代表地址。

需要注意的是:

Symbols

Symbols 主要应用于简化内存寻址的过程。比如维护一个 index,将指定的内存区域分为不同的片区,当需要对指定区域进行操作时,我们可以通过对应的 index 对其进行快速访问。这种将 symbol 与实际内存地址建立映射关系的方式,会大大增强程序的易读性和可维护性。该映射关系也是由 assmbler 来翻译的。

Machine Languages: Elements

Machine operations

不同的机器语言之间的实现可能并不相同,取决于其复杂度。

Addressing

内存寻址是一项非常昂贵的操作。通常来说,有两个问题:

Memory Hierarchy

解决方案是提供内存的级联:将内存按速度进行划分,不同速度的内存区域对应不同的任务。需要注意的是,速度越快,对应的内存就越小。

Registers

寄存器是访问速度最快的内存,通常由 CPU 内置。寄存器分为几个类型:

Addressing Modes

# Register mode R2 <- R2 + R1
Add R1, R2
# Direct mode Mem[200] <- Mem[200] + R1
Add R1, M[200]
# Indirect Mem[A] <- Mem[A] + R1
Add R1, @A
# Immediate R1 <- R1 + 73
Add 73, R1

Input / Output

外设(键盘鼠标)通常通过寄存器链接,并通过一定的协议(驱动)来使其工作。

Flow Control

The HACK Computer