Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'docs/ir-desc')
-rw-r--r--docs/ir-desc75
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.