《计算机系统要素学习》笔记之第4章 机器语言
- 机器语言:可以被看作是一种约定的形式,它利用处理器和寄存器来操控内存
- 内存(Memory):用来储存数据和指令的硬件设备,基本结构是一个连续的固定宽度的单元序列,即字(word)或内存单元。用Memory[address]、RAM[address]、M[address]表示。
- 处理器(CPU):Central Processing
Unit,是执行一组固定基本操作的设备,包括算术和逻辑操作,内存存取操作,控制操作(Control
Operation),操作对象是二进制数值,它们来自寄存器和指定的内存单元。 - 寄存器(Register):相当于处理器的一个高速本地内存,使得处理器能快速地操控数据和指令。每个寄存器只存储1位。
- 汇编语言(assembly language):采用助记符(symbolic mnemonics)来表示机器语言中二进制的操作码。
- 汇编编译器(Assembler):将汇编语言翻译成二进制机器语言的程序。
- 内存访问:直接寻址(Direct Addressing),立即寻址(Immediate Addressing),间接寻址(Indirect
Addressing) - Hack机器语言规范详述
Hack是一个基于冯 诺伊曼架构的16位计算机,由一个CPU、两个独立的内存模块(instruction memory and data memory),以两个内存映射I/O设备(Screen and keyboard)组成。 - 内存寻址空间:指令地址空间(instruction memory) 数据地址空间(data memory)
- A-指令:@value(15位),0vvv vvvv vvvv vvvv表示
- C-指令:dest=comp;jump,111a cccc ccdd djjj表示
- 符号:预定义符号(Predefined symbols),虚拟寄存器(Virtual
registers)如R0-R15代表0-15号RAM表示,预定义指针(Predefined
pointers)如SP、LCL、ARG、THIS、THAT表示0-4号RAM地址,I/O指针如SCREEN和KBD表示RAM地址为16384和24576,标签符号(Label
symbols),变量符号(Variable symbols) - 实现
- Mult.asm
@1
D=M
@EQ0
D;JEQ
@END
D;JLT
@0
D=A
@2
M=D
(COMP)
@2
D=M
@0
D=D+M
@2
M=D
@1
M=M-1
@1
D=M
@END
D;JEQ
@COMP
D;JMP
(EQ0)
@0
D=A;
@2
M=D;
(END)
@END
0;JMP - Fill.asm
(PRG)
@KBD //24576
D=M
@PRG
D;JEQ //if M[24576]==0 goto PRG
(BLACK)
@30
D=A
@0
M=D //loop num M[0]
@32767
D=A+1
@32767
D=D+A
@3
M=D // M[3]=65535
@24576
D=A
@2
M=D //store max address to M[2]
// LOOP0:
(LOOP0)
@SCREEN
D=A
@1
M=D //store screen address to M[1]
// black to all
(LOOP1)
@3
D=M //D=M[3]
@1
A=M
M=D // become black M[M[1>=65535
@1
D=M
@1
M=D+1 // M[1]++
@2
D=M
@1
D=D-M // D=M[2]-M[1]>=0?
@LOOP1
D;JGE
// condition to loop1 or white
@0
MD=M-1
@LOOP0
D;JNE
//@KBD //24576
//D=M
//@BLACK
//D;JNE //if M[24576]!=0 goto BLACK
// white to all
(LOOP3)
@SCREEN
D=A
@1
M=D //store screen address to M[1]
@24576
D=A
@2
M=D //store max address to M[2]
// black to all
(LOOP4)
@0
D=A
@1
A=M
M=D // become white 16 bit
@1
D=M
@1
M=D+1 // M[1]++
@2
D=M
@1
D=D-M
@LOOP4
D;JGE
// goto PRG
@PRG
0;JMP
版权声明:本文为weixin_43147737原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。