Shangrila is emulator / virtual machine of an non-existing computer. The computer-system implemented in Shangrila is an virtual system designed by myself.

The idea behind shangrila is to develop a computer system at my own. I have found the idea to build a processor witch would work with only one instruction, called OISC. I have implemented an emulator for such an CPU during a night session at the Chaos Communication Congress 2009. To use the CPU, I have to build some architecture around the CPU. Instead of using an existing computer architecture, I have thought about building my own. During the last few years I have worked sporadic on an implementation of the architecture and an clean implementation of the CPU working with the architecture.

I have created an multiple processor architecture for my OISC implementation. The architecture is relative similar to the harward architecture. All devices are memory mapped and are accessible using an plug-and-play-system.


The Shangrila VM is an dedicated program witch will work with a single file containing the boot program. All other tool will connect using a socket to the VM. The following tools and programs are available:

Shangrila VM: The VM implementing the architecture and driving the CPU and the devices

OISC Assembler: A simple assembler creating machine code for the Shangrila VM. The assembler supports some syntactic sugar which makes it very easy to write OISC assembler.

Shangrila CLI: The command line tool is used to control the Shangrila VM and shows log and debug messages for the VM.

Shangrila Debugger: The debugger is written in Java using SWING and shows the internals of the CPU, the memory and the devices. The debugger allows halting and stepping of the CPUs, memory inspection and manipulation, device state inspection and event logging.

The name

The name Shangrila used for the VM and the architecture was given by an friend of mine. He has tested a new fabric softener with an aroma called Shangrila. He loves the aroma so much the he sniffs on his clothes the whole day and repeat the name of the softener. Coincidentally I was looking for a name for my CPU at the same time - "Shangrila VM" was born.

The state

Shangrila is growing sporadically an is currently not really usable. I am trying to bring the software to an releasable state and write some documentation. If you want to help with the VM feel free to write an mail.


I have given a talk about the Shangrila VM and the OISC processor during the NOP (German). The presentation was the last talk on that day - therefor it is not very good. But maybe it will help to understand the concepts.