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
property |
value |
type |
add |
value |
The number to add to current cell |
Generated on +
and -
moveHead
property |
value |
type |
add |
type |
moveHead |
value |
The number of steps to move the tape head right |
Generated on <
and >
writeByte
property |
value |
type |
writeByte |
Generated on .
readByte
property |
value |
type |
readByte |
Generated on ,
loop
property |
value |
type |
loop |
contents |
An array of the commands making up the loop body |
Generated on [
…]
clear
property |
value |
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
property |
value |
type |
add |
value |
The number to add to the cell |
offfset |
The location of the cell relative to current tape position |
moveHead
property |
value |
type |
moveHead |
value |
The number of steps to move the tape head right |
writeByte
property |
value |
type |
writeByte |
offset |
The location of the cell relative to current tape position |
readByte
property |
value |
type |
readByte |
offset |
The location of the cell relative to current tape position |
loop
property |
value |
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
property |
value |
type |
clear |
offset |
The location of the cell relative to current tape position |