The Simplified Instructional Computer (also abbreviated
SIC) is a hypothetical computer system introduced in System
Software: An Introduction to Systems Programming, by
Leland Beck. Due to the fact that most modern
microprocessors include subtle, complex functions for the
purposes of efficiency, it can be difficult to learn systems
programming using a real-world system. The Simplified
Instructional Computer solves this by abstracting away these
complex behaviors in favor of an architecture that is clear
and accessible for those wanting to learn systems
programming.
2. SIC Instructional set:
The Simplified Instructional Computer (also abbreviated SIC)
is a hypothetical computer system introduced in System
Software: An Introduction to Systems Programming, by
Leland Beck. Due to the fact that most modern
microprocessors include subtle, complex functions for the
purposes of efficiency, it can be difficult to learn systems
programming using a real-world system. The Simplified
Instructional Computer solves this by abstracting away these
complex behaviors in favor of an architecture that is clear and
accessible for those wanting to learn systems programming.
3. SIC ARCHITECTURE:
The SIC machine has basic addressing, storing most memory
addresses hexadecimal integer format. Similar to most modern
computing systems, the SIC architecture stores all data in
binary and uses the two's complement to represent negative
values at the machine level. Memory storage in SIC consists of
8-bit bytes, and all memory addresses in SIC are byte
addresses.
Any three consecutive bytes form a 24-bit 'word' value,
addressed by the location of the lowest numbered byte in the
word value. Numeric values are stored as word values, and
character values use the 8-bit ASCII system.
4. The SIC machine does not support floating-point hardware
and have at most 32,768 bytes of memory.
There is also a more complicated machine built on top of SIC
called the Simplified Instruction Computer(SIC Instruction
set) with Extra Equipment. The XE expansion of SIC adds a
48-bit floating point data type, an additional memory
addressing mode, and extra memory (1 megabyte instead of
32,768 bytes) to the original machine. All SIC assembly code
is upwards compatible with SIC/XE.
5. SIC machines have several registers, each 24 bits long and
having both a numeric and character representation:
A (0): Used for basic arithmetic operations; known as the
accumulator register.
X (1): Stores and calculates addresses; known as the index
register.
L (2): Used for jumping to specific memory addresses and
storing return addresses; known as the linkage register.
PC (8): Contains the address of the next instruction to execute;
known as the program counter register.
SW (9): Contains a variety of information, such as carry or
overflow flags; known as the status word register.
6. In addition to the standard SIC registers, there are also four
additional general-purpose registers specific to the SIC/XE
machine:
B (3): Used for addressing; known as the base register.
S (4): No special use, general purpose register.
T (5): No special use, general purpose register.
F (6): Floating point accumulator register (This register is 48-
bits instead of 24).
7. These five/nine registers allow the SIC or SIC/XE machine to
perform most simple tasks in a customized assembly language.
In the System Software book, this is used with a theoretical
series of operation codes to aid in the understanding of
assemblers and linker-loaders required for the execution
of assembly language code.
8. Addressing Modes for SIC and SIC/XE:
The Simplified Instruction Computer has three instruction
formats, and the Extra Equipment add-on includes a fourth.
The instruction formats provide a model for memory and data
management. Each format has a different representation in
memory:
Format 1: Consists of 8 bits of allocated memory to store
instructions.
Format 2: Consists of 16 bits of allocated memory to store 8
bits of instructions and two 4-bits segments to store operands.
Format 3: Consists of 6 bits to store an instruction, 6 bits of
flag values, and 12 bits of displacement.
Format 4: Only valid on SIC/XE machines, consists of the
same elements as format 3, but instead of a 12-bit
displacement, stores a 20-bit address.
9. Both format 3 and format 4 have six-bit flag values in them,
consisting of the following flag bits:
n: Indirect addressing flag
i: Immediate addressing flag
x: Indexed addressing flag
b: Base address-relative flag
p: Program counter-relative flag
e: Format 4 instruction flag