LC-3

LC-3（Little Computer 3）是一种汇编语言及其指定的微处理器架构。由德克薩斯大學奧斯汀分校的 Yale Patt，和伊利诺伊大学厄巴纳-香槟分校的 Sanjay J. Patel 开发。它具有相对简单的指令集，可用于编写中等复杂的汇编程序，并且是C编译器的可行目标。该语言比 x86 简单，但具有许多与更复杂语言相似的功能。这些特性使其适合初级教学，因此最常用于教授计算机科学学生编程和计算机体系结构的基础知识。

 指令集 
LC-3 的寄存器字长为 16 位，使用一个 16 位可寻址存储器，拥有 65536 个位置的地址空间。寄存器文件包含八个寄存器，编号为R0至R7。所有寄存器都是通用的，任何能写入寄存器文件的指令都可以自由使用，但在某些情境下（例如从C代码转换到LC-3汇编）中，有些寄存器被用于特殊用途。

指令宽度为16位，操作码为4位。指令集为十六种可能的操作码中的十五条定义了指令。该架构支持使用键盘和显示器来调节输入和输出;这种支持通过内存映射的输入输出抽象（I/O）来实现。操作系统提供读取和回放键盘字符、将单个字符打印到显示器、打印整串字符串（打包和解压形式）以及停止机器的功能。

LC-3中的所有数据都是有符号整数（补码形式储存）。I/O设备运行ASCII字符。LC-3 不支持浮点数。

LC-3实现了十五种指令类型，第十六种操作码保留以供后续使用。该架构采取載入-儲存架構，内存中的值必须先存入寄存器文件，才能作操作它们。

LC-3 的运算指令包括有符号加法，按位与和按位非。寻址模式有PC相对寻址，间接寻址和寄存器寻址，支持无条件跳转，条件分支和子程序调用。
+ Formats of the entire LC-3 instruction set. Note:  indicates instructions that modify condition codes.  15  14  13  12  11  10  9  8  7  6  5  4  3  2  1  0 ADD 0001  DR SR1 0 00 SR2 ADD 0001  DR SR1 1 Imm5 AND 0101  DR SR1 0 00 SR2 AND 0101  DR SR1 1 Imm5 BR 0000 n z p PCoffset9 JMP 1100 000 BaseR 000000 JSR 0100 1 PCoffset11 JSRR 0100 0 00 BaseR 000000 LD 0010 DR PCoffset9 LDI 1010 DR PCoffset9 LDR 0110 DR BaseR offset6 LEA 1110 DR PCoffset9 NOT 1001 DR SR 111111 RET 1100 000 111 000000 ST 0011 SR PCoffset9 STI 1011 SR PCoffset9 STR 0111 SR BaseR offset6 TRAP 1111 0000 trapvect8 reserved 1101

 LC-3b 
LC-3b 是LC-3的改进版本，包含以下变化：
 机器的字长保持为16位，但内存现在可以用相同的地址空间进行字节寻址。
 LD和ST指令（使用PC相对寻址加载和存储数据）已被移除。
 LDI和STI指令（间接寻址加载和存储）使用基于寄存器的寻址，而非PC相对寻址。
 新增了两条指令，LDB和STB，用于操作单个内存字节。
 保留的操作码已被转换为一个移位指令SHF，支持任意大小的双向算术和逻辑移位。

参考资料

Category:汇编语言