Implementation of the UM-32 "Universal Machine" as described by the [Cult of the Bound Variable](http://boundvariable.org/)
Something went wrong. Try again.
Rust 99%
Assembly 1%
Shell <1%
Commits 39
docs: update README and author
Signed-off-by: tjh <x@tjh.dev>
fix: clear all clippy pedantic warnings
Signed-off-by: tjh <x@tjh.dev>
chore: cargo update
Signed-off-by: tjh <x@tjh.dev>
refactor: move main binary back to main.rs and move Um to submodule
Signed-off-by: tjh <x@tjh.dev>
ci: include required packages
Signed-off-by: tjh <did:plc:65gha4t3avpfpzmvpbwovss7>
chore: cargo update
Signed-off-by: tjh <did:plc:65gha4t3avpfpzmvpbwovss7>
upgrade continuous integration
Signed-off-by: tjh <did:plc:65gha4t3avpfpzmvpbwovss7>
README.md
UM-32 "Universal Machine" #
An implementation of the UM-32 "Universal Machine" as described by the Cult of the Bound Variable.
Usage #
Run the benchmark:
; cargo run --release -- files/sandmark.umz
um also features a rudimentary assembler, with an assembly language loosely modelled
on ARM assembly.
files/hello-world.asm:
;
; hello-world.asm
;
; Prints "Hello, world!" to the stdout.
;
message:
.wstr "Hello, world!\n"
adr r1, message
adr r4, loop
mov r3, 1
loop:
ldr r2, [r0, r1]
adr r6, next
adr r7, end
mov r7, r6, r2
jmp [r0, r7]
next:
out r2
add r1, r3
jmp [r0, r4]
end:
halt
To assemble and run, enable the asm feature with cargo:
; cargo run --features asm -- files/hello-world.asm