本文是笔者拜读《计算机系统要素》第4章(机器语言)的实践项目。
机器语言是一种约定的形式,用来对底层程序进行编码,从而形成一系列机器指令。高级语言的基本设计目标是通用性和较强的表达力;机器语言的设计目标是能直接运行在指定的硬件平台上,并能对这个平台进行全面操控。
机器语言是整个计算机体系中意义最深奥的接口,它也是硬件和软件相接的中间线。
二进制码相当晦涩,通常在机器语言中同时使用二进制码和助记符,符号表示也称为汇编语言,将汇编程序翻译成二进制码的程序称为汇编编译器。
Hack机器语言规范
Hack
是一个基于冯·诺伊曼架构的16
位计算机,由一个CPU
、两个独立的内存模块(指令内存和数据内存),以及两个内存映射I/O
设备(显示器和键盘)组成。
该计算机的两个内存区都是16
位宽、有15
位地址总线,所以这两个内存都包含32K
个16
位字。指令内存是只读设备。
Hack
程序员要接触两个16
位寄存器:D
和A
。D
仅用来存储数据,A
可以存储数据和地址。任何jump
操作都是跳转到“A
寄存器所指定的指令”。
Hack
命令包含了两种指令:地址指令(A
指令)、计算指令(C
指令)。
A指令