diff options
Diffstat (limited to 'docs/ir-desc')
-rw-r--r-- | docs/ir-desc | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/docs/ir-desc b/docs/ir-desc new file mode 100644 index 00000000000..0c1ab531f0b --- /dev/null +++ b/docs/ir-desc @@ -0,0 +1,75 @@ +Mono Intermediate Representation Documentation + +Operation: OP_ADDCC_IMM + + Add immediate that will set the carry flag. + + dreg: + Destination register + inst_imm + Immediate value to add. + sreg1: + Source register to add. + +Operation: OP_CALL_HANDLER. + + cil_code: + Points to the CIL where the LEAVE or LEAVE_S + instruction was found. + + inst_target_bb: + The target basic block for this invocation. + + This instruction must call the target basic block. + +Operation: OP_CISINST + + Implements the CEE_MONO_CISINST opcode that is decoded from + the CIL stream. + + This opcode takes as input an object reference and a class, + and leaves on the assigned register: + + 0. if the object is an instance of the class, + 1. if the object is not instance of the class, + 2. if the object is a proxy whose type cannot be determined. + +Operation: OP_CCASTCLASS + + Implements the CEE_MONO_CCASTCLASS opcode that is decoded from + the CIL stream. + + This opcode takes as input an object reference and a class, + and leaves on the assigned register: + + 0. if the object is an instance of the class, + 1. if the object is a proxy whose type cannot be determined + + throws an InvalidCastException exception otherwise. + +Operation: OP_LOCALLOC + inst_left: + The value + ins->inst_left = *sp; + ins->cil_code = ip; + + This is the equivalent of alloca() in a C implementation: it + allocates a bunch of bytes on the stack dynamically. Local + variables are allocated statically in the stack instead. + + It is implemented by moving the stack pointer according to the + platform ABI: you may need to keep a specific frame register + to address local variables when LOCALLOC is used (the PPC code + does this, for example: ifyou're doing the s390 port I suggest + starting from that) + +Operation: OP_SUBCC_IMM + + Substract immediate that will set the borrow flag. + + dreg: + Destination register + inst_imm + Immediate value to add. + sreg1: + Source register to add. |