Projects and Technical Ramblings

Documentation For My Homemade Processor, Compiler And OS!

Leave a comment

For those of you who haven’t been following the ‘blog (because I’ve just made it… oops…) I have:

  • Designed a simple CPU architecture (emphasis on simple!)
  • Built it out of wires and logic parts from various shady websites (the microcode ROMs came from a washing machine)
  • Written a compiler for a C-like language, compiling down to the machine’s single-instruction instruction set
  • Written a functional OS in this language
  • Written Windows development tools: IDE, emulator

Which I think is all pretty darn spiffy!

The development is more or less done and dusted (there are a couple of hardware things to tidy up, which I will post about on this blog), but that’s not what this post is about. Although the project was originally for fun, it became my A-level computing project, which implied copious, perhaps excessive amounts of documentation.

I was wary of posting the documentation before results day, because exam boards tend to have some pretty draconian plagiarism checks. It’s close enough now though that eh, who cares. I’ll post it.

Writeup (191 pages, but almost 100 of that is just code listings):

example page:

There’s also a programming manual / tutorial, which explains some of the basic concepts behind how the computer works, such as the Von Neumann machine, and then guides you through writing simple programs in my language. (30-odd pages)

The documentation is available in all of its (dubious) glory on my GitHub repo:

PDFs are here.

So, if homemade compilers and processors float your boat, take a look!


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s