ISA定义了软件编程所需要的必要而完整的描述。
ISA给出了内存组织方式,寄存器组,指令集(包括操作码,数据类型,寻址模式)等信息。
LC-3的数据处理是16位的,所以对于LC-3来说,16位为一个字,LC-3也可称为一个“字寻址”机器。
寄存器
从内存中获取数据的速度很慢(通常远不止一个周期),所以,LC-3也提供了临时存储空间,访问速度为一个周期。
实现方式为寄存器,LC-3提供了一组通用寄存器(GPR)。
寄存器和内存特性一样,具有记忆功能。存储信息并且可以再次读出,寄存器的存储大小为一个字,LC-3中即为1个字。
同时寄存器可以独立寻址,每个寄存器都是唯一的标识,所以才能在一个周期内获取数据。
LC-3提供了R0-R7 8个寄存器(这意味着标识编号只需要3位bit就可以标识了)
指令集
一条指令分为两个部分:操作码(做什么)、操作数(对谁操作)
一个ISA的指令集包括操作码的集合、数据类型、寻址模式。寻址模式决定了操作数的存放位置。
操作码:
有的ISA拥有庞大的指令操作码集合,有的确很小,并且现在的大多数计算机通常都使用一串指令来完成信息的操作而不是一条,个人觉得原因是大部分指令其实可以通过小部分基础指令通过组合来完成操作,这样的话可以节省操作码所占用位数。LC-3定义了15条指令,每个指令对应一个操作码,因此只需要4个bit位就足够定义了。(其中1101没有定义)
指令可以分为三类:运算、数据搬移、控制。
运算类负责处理信息,数据搬移类负责在内存和寄存器直接以及内存/寄存器和输入/输出设备之间的信息转移。
控制类负责改变指令的执行顺序,即可以让程序随时跳转到指定位置继续执行(而不是常规的顺序往下)
指令列表
0000 | BR((无)条件转移) | |
0001 | ADD 加操作 | 改变条件码 |
0010 | LD PC相对寻址load | 改变条件码 |
0011 | ST PC相对寻址store | |
0100 | JSR(R)子程序调用 | |
0101 |