Nov 02 2003
Assembler and Linker for SIC/XE
The SIC/XE architecture is the brainchild of Leland L. Beck, who is the author of System Software: An Introduction to Systems Programming [1]. This book is used in many university courses that deal with language processors. The SIC (Simplified Instructional Computer) architecture itself is completely made-up and has never been implemented for any practical application. All of its functions are entirely conceptual and will never serve a purpose in the real world. So, of course, in my Language Processors class in college, one of the assignments was to write an assembler for the SIC/XE instruction set, and a linker/loader for compiled SIC/XE object code. Let’s just say that, by the end of this assignment, I really started to hate the name “SIC/XE,” and so will you.
To begin with, here is the assembler for the SIC/XE assembly language: download source code and executable. There is no documentation included, since you should already know what you’re doing if you’re actually downloading this. However, here are some quick facts about the assembler.
- The assembler is for SIC/XE only, not SIC
- It does support literals
- It does not support macros
- It does not support external references or definitions
- It does create relocatable programs with Modification records
And now, here is the linker/loader for programs compiled with the assembler: download source code and executable. There is also no documentation for the linker/loader, but here are some quick facts:
- The linker is only for SIC/XE programs, not SIC
- It supports external references
- It only supports modification records with import reference numbers, e.g.
M00002405+02 - It outputs a file called
outfile, which is simply a dump of the SIC/XE’s memory as it would appear if the program were completely loaded. The file also includes a dump of all external references and their addresses.
This code is freeware, but please give me credit where appropriate if you’re actually going to use it. These programs come as-is, and with no warranty whatsoever.
Reference:
1. Beck, Leland L. System Software: An Introduction to Systems Programming, 3rd ed. 1997, Addison Wesley Longman, Inc.

October 26th, 2006 at 10:41 pm
“Let’s just say that, by the end of this assignment, I really started to hate the name “SIC/XE,” and so will you.”
same here buddy
I can not seem to be able to compile siclink.cpp,
can someone help me out?
I get way too many errors everytime I try to compile that file
May 4th, 2007 at 7:50 pm
Hi
Thanx for posting your Assignment
i am this course this semester and the prof ask mme to make an sic assembler but i have worked for 3 weeks now i didnt finish yet ((i am really baaaad in programming ))
now were can i found this code on the net (sic Assembler)
its could help me right???
and thanx
Note: i am bad in English Alsoooooooooooo!
November 5th, 2007 at 12:15 am
Nice post…I go to SDSU where Beck is the CS Dept chair. I’m in the class that uses his book…Figures it isnt good for anything
December 3rd, 2007 at 7:18 pm
Ziad,
Can you help me with you assignment? I’ve been stuck with it for a long time. I’m truly grateful if you can send yours to me. Thank you!
April 27th, 2008 at 6:42 pm
Hey :),
This is a very cool thing to post
I’ve not been attending the Systems programming course, and needed to make a quick SIC assembler, learning all about SIC in a couple of days isn’t so easy.
I managed to write very small Pass1 compiler, of course it’s totally buggy and wasn’t good enough
as a project.
so I’ve downloaded yours, learned it well, it helped me write my own Pass1, Pass2 assembler !:)
People like you help keep the world great !:)
thx again.
November 25th, 2008 at 1:35 pm
can i have the one pass assmbler program on VB.NET code ???
i need help