Docs: compiler.cfg.instructions improvements

db4
Björn Lindqvist 2014-11-07 17:15:40 +01:00 committed by John Benediktsson
parent 305ba30e96
commit cbc8681187
1 changed files with 76 additions and 5 deletions

View File

@ -1,5 +1,5 @@
USING: classes compiler.cfg help.markup help.syntax kernel layouts
slots.private ;
USING: arrays classes compiler.cfg cpu.architecture help.markup help.syntax
kernel layouts slots.private ;
IN: compiler.cfg.instructions
HELP: new-insn
@ -26,6 +26,15 @@ HELP: foldable-insn
{ $class-description
"Instructions which are referentially transparent; used for value numbering." } ;
HELP: ##load-reference
{ $class-description
"An instruction for loading a pointer to an object into a register. It has the following slots:"
{ $table
{ { $slot "dst" } { "Register to load the pointer into." } }
{ { $slot "obj" } { "A Factor object." } }
}
} ;
HELP: ##inc-d
{ $class-description
"An instruction that increases or decreases the data stacks height by n. For example, " { $link 2drop } " decreases it by two and pushing an item increases it by one."
@ -34,7 +43,18 @@ HELP: ##inc-d
HELP: ##prologue
{ $class-description
"An instruction for generating the prologue for a cfg. All it does is decrementing the stack register a number of cells to give the generated code some stack space to work with." }
{ $see-also ##epilogue } ;
{ $see-also ##epilogue } ;
HELP: ##allot
{ $class-description
"An instruction for allocating memory in the nursery. Usually the instruction is preceeded by " { $link ##check-nursery-branch } " which checks that there is enough room in the nursery to allocate. It has the following slots:"
{ $table
{ { $slot "dst" } { "Register to put the pointer to the memory in." } }
{ { $slot "size" } { "Number of bytes to allocate." } }
{ { $slot "class-of" } { "Class of object to allocate, e.g " { $link tuple } " or " { $link array } "." } }
{ { $slot "temp" } { "Temporary register to clobber." } }
}
} ;
HELP: ##alien-invoke
{ $class-description
@ -65,8 +85,22 @@ HELP: ##set-slot
{ { $slot "slot" } { "Slot index." } }
{ { $slot "tag" } { "Type tag for obj." } }
}
}
{ $see-also ##set-slot-imm } ;
} ;
HELP: ##set-slot-imm
{ $class-description
"An instruction for what? It has the following slots:"
{ $table
{ { $slot "src" } { "Register containing the value to put in the slot." } }
{ { $slot "obj" } { "Register containing the object to set the slot on.." } }
{ { $slot "slot" } { "Slot index." } }
{ { $slot "tag" } { "Type tag for obj." } }
}
} ;
{ ##set-slot %set-slot } related-words
{ ##set-slot-imm %set-slot-imm } related-words
{ ##set-slot-imm ##set-slot } related-words
HELP: ##replace-imm
{ $class-description
@ -149,8 +183,10 @@ $nl
"Instruction classes for moving values around:"
{ $subsections
##copy
##peek
##reload
##replace
##replace-imm
##spill
}
"Garbage collection words and instruction classes:"
@ -161,4 +197,39 @@ $nl
{ $subsections
##alien-invoke
alien-call-insn
}
"Allocation:"
{ $subsections
##allot
}
"Constant loading:"
{ $subsections
##load-integer
##load-reference
}
"Integer arithmetic and bit operations:"
{ $subsections
##add
##add-imm
##and
##and-imm
##mul
##mul-imm
##or
##or-imm
##sar
##sar-imm
##shl
##shl-imm
##sub
##sub-imm
##xor
##xor-imm
}
"Slot access:"
{ $subsections
##slot
##slot-imm
##set-slot
##set-slot-imm
} ;