Home

LC3

LC-3, short for Little Computer 3, is a 16-bit educational instruction set architecture used to teach computer organization and assembly language programming. Developed for undergraduate coursework, it provides a small, well-documented platform that is easy to simulate and analyze while capturing essential concepts of real processors.

Architectural overview

The LC-3 uses 16-bit words and a 16-bit address space, yielding up to 65,536 memory locations. It

Instruction set and addressing

LC-3 instructions are 16 bits wide and begin with a 4-bit opcode. The ISA includes arithmetic and

Educational use

LC-3 is widely used in university courses and textbooks to illustrate core concepts of computer organization,

features
eight
general-purpose
registers
labeled
R0
through
R7,
a
program
counter
(PC),
and
condition
codes
that
indicate
negative,
zero,
or
positive
results
after
operations.
Memory
is
accessed
with
a
simple
load/store
model,
and
input/output
is
handled
through
software-visible
traps
that
invoke
routines
provided
by
the
operating
environment.
The
architecture
emphasizes
straightforward
data
paths
and
a
minimal
yet
functional
set
of
building
blocks
for
teaching.
logical
operations
(such
as
add
and
and),
memory
access
instructions
(load
and
store,
including
indirect
and
base-plus-offset
forms),
and
control
flow
instructions
(various
branches,
jumps,
and
subroutine
calls).
It
also
supports
immediate
operands
for
certain
instructions,
enabling
simple
constant
use
without
additional
instructions.
Indirect
addressing
variants
and
PC-relative
addressing
aid
in
teaching
memory
hierarchies
and
program
structure.
A
trap
mechanism
provides
a
controlled
channel
to
system
routines,
enabling
input/output
and
other
services
without
exposing
low-level
hardware
details.
machine-level
programming,
and
the
interaction
between
software
and
hardware.
Simulators
and
reference
implementations
accompany
many
curricula,
reinforcing
topics
such
as
instruction
encoding,
memory
addressing,
condition
codes,
and
the
role
of
operating
system
interfaces
in
a
simple,
comprehensible
environment.