From Esolang
Jump to navigation Jump to search
This article is a stub, which means that it is not detailed enough and needs to be expanded. Please help us by adding some more information.

ZOWIE is an assembly-like esoteric programming language designed by Chris Pressey between summer and winter of 2009.

The primary design goal of ZOWIE was for control flow to be both structured (i.e. not using explicit jumps or labels) and memory-mapped (triggered by reads and writes of registers.) This design goal was inspired by Jeffry Johnston's attempt to reduce the number of instructions in BitChanger by memory-mapping the loop operation.

The main challenge in meeting this design goal was that memory-mapping a loop structure like while requires some way to jump to the end of the loop -- but if the end of the loop is defined by when some memory location is changed, rather than when some point of the program text is reached, it is not possible to always detect it statically (by Rice's Theorem.)

It took several attempts to find something that worked (and it is not clear that this approach could be carried over to BitChanger.) Once it was clear that this was possible, it was decided to memory-map all operations in ZOWIE, so there is only one instruction, MOV, with a handful of forms.


ZOWIE's syntax is similar to that of SMITH. There are five instruction forms:

MOV register, immediate       e.g.  MOV R8, 141
MOV register, register              MOV R8, R9
MOV [register], register            MOV R[R8], R9
MOV register, [register]            MOV R8, R[R9]
MOV [register], [register]          MOV R[R8], R[R9]

Unlike SMITH, the closing square bracket is purely for decoration -- R[R8 is equivalent to R[R8], while R2] is equivalent to R2.

Computational class

The "Computational class" section of ZOWIE's documentation demonstrates that a brainfuck interpreter can be implemented in ZOWIE; it follows that ZOWIE is Turing-complete.

External resources