1.6 KiB
Gir uses two types of IR, with and without offsets
Without offsets
This is produced by parse
. Each subsection shows the properties the
command object of that type has in IR without offsets
add
type | add
value | The number to add to current cell
Generated on +
and -
moveHead
type | moveHead
value | The number of steps to move the tape head right
Generated on <
and >
writeByte
type | writeByte
Generated on .
readByte
type | readByte
Generated on ,
loop
type | loop
contents | An array of the commands making up the loop body
Generated on [
…]
clear
type | clear
Not generated by the parser directly, but generated by optimizations
With offsets
This is produced by the optimization pass addOffsetProperties
. Each
subsection shows the properties the command object of that type has in IR
with offsets
add
type | add
value | The number to add to the cell
offfset | The location of the cell relative to current tape position
moveHead
type | moveHead
value | The number of steps to move the tape head right
writeByte
type | writeByte
offset | The location of the cell relative to current tape position
readByte
type | readByte
offset | The location of the cell relative to current tape position
loop
type | loop
contents | An array of the commands making up the loop body
isBalanced | Whether execution of the loop body ends in same cell it started in
clear
type | clear
offset | The location of the cell relative to current tape position