LC-3-ISA
以下是整理合并后的LC-3指令集架构(ISA)总结,按统一分类标准呈现,信息完整且无冗余:
LC-3 ISA 分类总结
指令总数:15条(不含 HALT
和 RESERVED
)
分类:运算指令、数据移动指令、控制流指令、陷阱和系统调用、其他指令
一、运算指令(ALU 操作)
负责算术和逻辑运算,结果更新条件码(N/Z/P)。
-
ADD
- 格式:
ADD DR, SR1, SR2
(寄存器-寄存器)ADD DR, SR1, imm5
(寄存器-立即数)
- 操作码:
0001
- 功能:将
SR1 + SR2
或SR1 + 符号扩展的5位立即数
结果存入DR
。 - 影响条件码:✔️
- 格式:
-
AND
- 格式:
AND DR, SR1, SR2
(寄存器-寄存器)AND DR, SR1, imm5
(寄存器-立即数)
- 操作码:
0101
- 功能:将
SR1 & SR2
或SR1 & 符号扩展的5位立即数
结果存入DR
。 - 影响条件码:✔️
- 格式:
-
NOT
- 格式:
NOT DR, SR
- 操作码:
1001
- 功能:对
SR
的值按位取反(补码非),结果存入DR
。 - 影响条件码:✔️
- 格式:
二、数据移动指令
实现寄存器和内存之间的数据传输。
加载指令
-
LD
- 格式:
LD DR, PCoffset9
- 操作码:
0010
- 功能:将
PC + 符号扩展的9位偏移
地址处的数据加载到DR
。 - 影响条件码:✔️
- 格式:
-
LDI(间接加载)
- 格式:
LDI DR, PCoffset9
- 操作码:
1010
- 功能:先读取
PC + offset9
处的地址,再加载该地址处的数据到DR
。 - 影响条件码:✔️
- 格式:
-
LDR(基址偏移加载)
- 格式:
LDR DR, BaseR, offset6
- 操作码:
0110
- 功能:将
BaseR + 符号扩展的6位偏移
地址处的数据加载到DR
。 - 影响条件码:✔️
- 格式:
-
LEA(加载有效地址)
- 格式:
LEA DR, PCoffset9
- 操作码:
1110
- 功能:将
PC + offset9
的地址存入DR
(不访问内存)。 - 影响条件码:✔️
- 格式:
存储指令
-
ST
- 格式:
ST SR, PCoffset9
- 操作码:
0011
- 功能:将
SR
的值存储到PC + offset9
地址处。 - 影响条件码:❌
- 格式:
-
STI(间接存储)
- 格式:
STI SR, PCoffset9
- 操作码:
1011
- 功能:先读取
PC + offset9
处的地址,再将SR
的值存储到该地址处。 - 影响条件码:❌
- 格式:
-
STR(基址偏移存储)
- 格式:
STR SR, BaseR, offset6
- 操作码:
0111
- 功能:将
SR
的值存储到BaseR + offset6
地址处。 - 影响条件码:❌
- 格式:
三、控制流指令
控制程序执行流程,包括分支、跳转和子程序调用。
-
BR(条件分支)
- 格式:
BRn/z/p/组合, PCoffset9
- 操作码:
0000
- 功能:根据条件码(N/Z/P)决定是否跳转到
PC + offset9
。 - 影响条件码:❌
- 格式:
-
JMP/RET
- 格式:
JMP BaseR
或RET
(等价于JMP R7
) - 操作码:
1100
- 功能:无条件跳转到
BaseR
中的地址。 - 影响条件码:❌
- 格式:
-
JSR/JSRR(子程序调用)
- 格式:
JSR PCoffset11
(操作码0100
,PC 相对跳转)JSRR BaseR
(操作码0100
,寄存器间接跳转)
- 功能:将当前
PC
存入R7
,跳转到子程序地址。 - 影响条件码:❌
- 格式:
-
RTI(中断返回)
- 操作码:
1000
- 功能:特权指令,用于从中断返回,恢复 PC 和处理器状态。
- 影响条件码:✔️(恢复中断前的状态)
- 操作码:
四、陷阱和系统调用
处理输入输出和系统级操作。
- TRAP
- 格式:
TRAP trapvect8
- 操作码:
1111
- 功能:根据 8 位陷阱向量调用系统服务。
- 常用陷阱向量:
TRAP x20
(GETC):读取字符到R0
。TRAP x21
(OUT):输出R0
的低 8 位字符。TRAP x25
(HALT):终止程序执行。
- 影响条件码:❌
- 格式:
五、其他指令
-
HALT
- 格式:
HALT
(实际为TRAP x25
) - 功能:终止程序执行。
- 格式:
-
RESERVED
- 说明:未定义的操作码,执行可能导致异常或用于扩展。
关键特性
- 条件码(CC):由运算指令(ADD/AND/NOT)和加载指令(LD/LDR/LDI/LEA)更新,决定分支行为。
- 寻址模式:支持 PC 相对、基址偏移、间接寻址等。
- 简洁性:无硬件乘除和移位指令,需通过软件实现。
- 中断支持:通过
TRAP
和RTI
实现系统调用与中断处理。
此总结覆盖 LC-3 全部指令及核心特性,适用于汇编编程与架构理解。