跳转至

LC-3-ISA

以下是整理合并后的LC-3指令集架构(ISA)总结,按统一分类标准呈现,信息完整且无冗余:


LC-3 ISA 分类总结

指令总数:15条(不含 HALTRESERVED
分类:运算指令、数据移动指令、控制流指令、陷阱和系统调用、其他指令


一、运算指令(ALU 操作)

负责算术和逻辑运算,结果更新条件码(N/Z/P)。

  1. ADD

    • 格式
      • ADD DR, SR1, SR2(寄存器-寄存器)
      • ADD DR, SR1, imm5(寄存器-立即数)
    • 操作码0001
    • 功能:将 SR1 + SR2SR1 + 符号扩展的5位立即数 结果存入 DR
    • 影响条件码:✔️
  2. AND

    • 格式
      • AND DR, SR1, SR2(寄存器-寄存器)
      • AND DR, SR1, imm5(寄存器-立即数)
    • 操作码0101
    • 功能:将 SR1 & SR2SR1 & 符号扩展的5位立即数 结果存入 DR
    • 影响条件码:✔️
  3. NOT

    • 格式NOT DR, SR
    • 操作码1001
    • 功能:对 SR 的值按位取反(补码非),结果存入 DR
    • 影响条件码:✔️

二、数据移动指令

实现寄存器和内存之间的数据传输。

加载指令

  1. LD

    • 格式LD DR, PCoffset9
    • 操作码0010
    • 功能:将 PC + 符号扩展的9位偏移 地址处的数据加载到 DR
    • 影响条件码:✔️
  2. LDI(间接加载)

    • 格式LDI DR, PCoffset9
    • 操作码1010
    • 功能:先读取 PC + offset9 处的地址,再加载该地址处的数据到 DR
    • 影响条件码:✔️
  3. LDR(基址偏移加载)

    • 格式LDR DR, BaseR, offset6
    • 操作码0110
    • 功能:将 BaseR + 符号扩展的6位偏移 地址处的数据加载到 DR
    • 影响条件码:✔️
  4. LEA(加载有效地址)

    • 格式LEA DR, PCoffset9
    • 操作码1110
    • 功能:将 PC + offset9 的地址存入 DR(不访问内存)。
    • 影响条件码:✔️

存储指令

  1. ST

    • 格式ST SR, PCoffset9
    • 操作码0011
    • 功能:将 SR 的值存储到 PC + offset9 地址处。
    • 影响条件码:❌
  2. STI(间接存储)

    • 格式STI SR, PCoffset9
    • 操作码1011
    • 功能:先读取 PC + offset9 处的地址,再将 SR 的值存储到该地址处。
    • 影响条件码:❌
  3. STR(基址偏移存储)

    • 格式STR SR, BaseR, offset6
    • 操作码0111
    • 功能:将 SR 的值存储到 BaseR + offset6 地址处。
    • 影响条件码:❌

三、控制流指令

控制程序执行流程,包括分支、跳转和子程序调用。

  1. BR(条件分支)

    • 格式BRn/z/p/组合, PCoffset9
    • 操作码0000
    • 功能:根据条件码(N/Z/P)决定是否跳转到 PC + offset9
    • 影响条件码:❌
  2. JMP/RET

    • 格式JMP BaseRRET(等价于 JMP R7
    • 操作码1100
    • 功能:无条件跳转到 BaseR 中的地址。
    • 影响条件码:❌
  3. JSR/JSRR(子程序调用)

    • 格式
      • JSR PCoffset11(操作码 0100,PC 相对跳转)
      • JSRR BaseR(操作码 0100,寄存器间接跳转)
    • 功能:将当前 PC 存入 R7,跳转到子程序地址。
    • 影响条件码:❌
  4. RTI(中断返回)

    • 操作码1000
    • 功能:特权指令,用于从中断返回,恢复 PC 和处理器状态。
    • 影响条件码:✔️(恢复中断前的状态)

四、陷阱和系统调用

处理输入输出和系统级操作。

  1. TRAP
    • 格式TRAP trapvect8
    • 操作码1111
    • 功能:根据 8 位陷阱向量调用系统服务。
    • 常用陷阱向量
      • TRAP x20(GETC):读取字符到 R0
      • TRAP x21(OUT):输出 R0 的低 8 位字符。
      • TRAP x25(HALT):终止程序执行。
    • 影响条件码:❌

五、其他指令

  1. HALT

    • 格式HALT(实际为 TRAP x25
    • 功能:终止程序执行。
  2. RESERVED

    • 说明:未定义的操作码,执行可能导致异常或用于扩展。

关键特性

  • 条件码(CC):由运算指令(ADD/AND/NOT)和加载指令(LD/LDR/LDI/LEA)更新,决定分支行为。
  • 寻址模式:支持 PC 相对、基址偏移、间接寻址等。
  • 简洁性:无硬件乘除和移位指令,需通过软件实现。
  • 中断支持:通过 TRAPRTI 实现系统调用与中断处理。

此总结覆盖 LC-3 全部指令及核心特性,适用于汇编编程与架构理解。