Oolong is a virtual computer with a custom architecture that runs its own assembly language. Its use is as a compilation target for other programming languages, as it can compile to C or be interpreted.
Over the last few weeks I've been working on Oolong as a compilation target for Lazuli, a programming language I have been working on as well. Oolong also comes with a (very rushed) assembler written in python if you want to write code directly.
Oolong supports the following commands:
0x00
: nop
ld reg, val
, 0x01, reg, val
, 3 bytes
st reg, addr
, 0x02, reg, addr
, 4 bytes
poke val, addr
, 0x03, val, addr
, 4 bytes
peek addr
, 0x04, addr
, 3 bytes (stores value at a reg)
push val
, 0x05, val
, 2 bytes
pop reg
, 0x06, reg
, 2 bytes (stores value at a reg)
Operations: c = a OP b
add
, 0x07
, 1 byte
sub
, 0x08
, 1 byte
mul
, 0x09
, 1 byte
div
, 0xA
, 1 byte
halt
, 0xB
, 1 bytes
jmp addr
, 0xC, addr
, 3 bytes
Logic:
and
, 0x0D
, 1 byte
or
, 0x0E
, 1 byte
xor
, 0x0F
, 1 byte
not
, 0x1F
, 1 byte
No. There are many things I need to add to make it somewhat usable:
Oolong is made to be 8 bit only. I wouldn't really mind it being 16 bit, but I still want to focus on it being specifically 8 bit, as the Lazuli language is meant to resemble programming for 8 bit machines. So... sorry, I guess.
If you know some C and are interested, heres the github. I update the repo usually every week or so.