OVERTURE架构指令集及汇编器
概述
OVERTURE指令集是游戏图灵完备(Turing Complete)中的第一款虚拟计算机所使用的指令集。这里将描述OVERTURE指令集,为实际的CPU设计做参考。该指令集共有16条指令、2条可选的拓展指令。
指令集描述

OVERTURE指令集如上图所示,分为4部分,分别为:
- 立即数模式。低6位数据作为立即数写入Reg0. 通过立即数可以写入0~63的字面值。
- 计算模式。通过低3位选择运算类型。从Reg1和Reg2中读取数值并将计算结果保存在Reg3. 可能的运算有OR, NAND, NOR, AND, ADD, SUB.
- 复制模式。将源寄存器(Source Reg)的值复制到目的寄存器(Dest Reg)。
- 比较模式。也称跳转模式。读取Reg3中的值并和指定的条件比较。条件满足时跳转到Reg0的位置。Reg0内的值不能为0. (用作指示器)
寄存器
OVERTURE指令集架构可以最多控制8个寄存器/设备。在图灵完备游戏中,Reg0~Reg5为通用寄存器,Reg6为IO设备。
计算命令
| Type Code | Don't Care | Opcode | Operation |
| :-------: | :--------: | :----: | :-------: |
| 01 | 000 | 000 | OR |
| 01 | 000 | 001 | NAND |
| 01 | 000 | 010 | NOR |
| 01 | 000 | 011 | AND |
| 01 | 000 | 100 | ADD |
| 01 | 000 | 101 | SUB |
比较命令
| Type Code | Don't Care | Opcode | Operation |
| :-------: | :--------: | :----: | :-------: |
| 11 | 000 | 000 | Never |
| 11 | 000 | 001 | =0 |
| 11 | 000 | 010 | <0 |
| 11 | 000 | 011 | <=0 |
| 11 | 000 | 100 | Always |
| 11 | 000 | 101 | !=0 |
| 11 | 000 | 110 | >=0 |
| 11 | 000 | 111 | >0 |
拓展寻址空间
目前PC的寻址空间为255byte. 为了增加实用性,增加一条规定:
- 程序跳转时,如果Reg0中的值为0,那么选择跳转到Reg1(低8位)和Reg2(高8位)指示的位置。
通过增加地址位数,可以获得65kbyte的寻址空间。
拓展指令
这部分是在OVERTURE指令集基础上拓展的指令,增加了对RAM的读写操作,使得整个系统更加实用。
- 计算模式下的内存指令。把Reg3处的值存储在RAM中Reg0所指示的位置。或者把Reg0所指示的位置的RAM值读取到Reg3处。
| Type Code | Don't Care | Opcode | Operation |
| :-------: | :--------: | :----: | :--------: |
| 01 | 000 | 110 | Store Word |
| 01 | 000 | 111 | Load Word |
- 如果Reg0中的值为0,那么选择Reg1(低8位)和Reg2(高8位)作为RAM的地址。
汇编器