指令集架构(Instruction Set Architecture,ISA)
ISA定义了软件编程所需要的必要而完整的描述,具体来说,ISA定义了3个东西:操作码的集合、数据类型和寻址模式指令:由操作码和操作数组成。在LC-3中,定义了15条指令,每条指令均占16个bit;指令可以分为三类:运算、数据搬迁、控制操作码:每个指令都有唯一的4bit操作码(bit[15:12]),而不同的操作码对应不同的指令格式LC-3中几个重要的寄存器:
- 通用寄存器(General Purpose Register,GPR):R0~R7共8个,每个均为16bit
- IR、PC:上一章已经讲过,IR用来存放本次执行的指令,PC用来存放下一条指令所在的内存地址
- 条件码:LC-3中有3个位寄存器,为N、Z、P,一旦GPR的数据发生变化,条件码的对应一位就会发生变化:写入正数时,N置1;写入0时,Z置1;写入负数时,P置1。条件码的作用是可以根据条件码的变化来控制指令执行的顺序。
指令介绍
运算操作指令在LC-3中只有3个:ADD、AND、NOT。这几个指令有几个惯用的用法:数据搬迁指令在LC-3中有7个:LD、SD、LDR、STR、LDI、STI、LEA
- 寄存器清零:和0做AND操作
- 减法:NOT第二个操作数后+1(即取补码)与第一个操作数ADD
- PC相对寻址:LD和SD。DR←M[PC+PCoffset9];