# UM-32 "Universal Machine" An implementation of the UM-32 "Universal Machine" as described by the [Cult of the Bound Variable](http://boundvariable.org). ## Usage Run the benchmark: ```sh ; 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: ```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: ```sh ; cargo run --features asm -- files/hello-world.asm ```