Jump to content

Simplified Instructional Computer

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Winglerw28 (talk | contribs) at 22:55, 7 April 2013 (Added content to clarify the page, as well as adding the extra equipment SIC mode). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

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 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.

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. 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 with Extra Equipment (SIC/XE). 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.


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.

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; know 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).


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.

Addressing Modes for SIC/XE

. Rule 1: e = 0 : format 3 e = 1 : format 4

-- format 3: b = 1, p = 0 (base relative) b = 0, p = 1 (pc relative) b = 0, p = 0 (direct addressing)

-- format 4: b = 0, p = 0 (direct addressing)

x = 1 (index)

i = 1, n = 0 (immediate) i = 0, n = 1 (indirect) i = 0, n = 0 (SIC) i = 1, n = 1 (SIC/XE for SIC compatible)

. Rule 2: i = 0, n =0 (SIC) b, p, e is part of the address.

Sample program

Given below is a program illustrating data movement in SIC.
LDA FIVE
STA ALPHA
LDCH CHARZ
STCH C1

ALPHA RESW 1
FIVE WORD 5
CHARZ BYTE C'Z'
C1 RESB 1


Simulators

The number of simulators available for SIC are fewer compared to those available for other architectures like MIPS. SOme of the simulators are listed below.

See also

References

  • Beck, Leland (1996), System Software: An Introduction to Systems Programming (3 ed.), Addison-Wesley, ISBN 0-201-42300-6
  • SICvm A Virtual Machine based on a Simplified Instructional Computer (SIC)