You've already forked linux-packaging-mono
							
							
		
			
	
	
		
			76 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			76 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | 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. |