aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes/scripting/Engines/LSLEngine/LSLHandler/LSL_OPCODE_IL_processor.cs
diff options
context:
space:
mode:
authorSean Dague2007-07-30 20:11:40 +0000
committerSean Dague2007-07-30 20:11:40 +0000
commit74bb5282a09ec095a7ff810c62f79cc64e187686 (patch)
treee0a9b703bfcbbab59b04351dd71508fa913e741a /OpenSim/Region/Environment/Scenes/scripting/Engines/LSLEngine/LSLHandler/LSL_OPCODE_IL_processor.cs
parentadded OnDisconnectUser event to required classes (diff)
downloadopensim-SC_OLD-74bb5282a09ec095a7ff810c62f79cc64e187686.zip
opensim-SC_OLD-74bb5282a09ec095a7ff810c62f79cc64e187686.tar.gz
opensim-SC_OLD-74bb5282a09ec095a7ff810c62f79cc64e187686.tar.bz2
opensim-SC_OLD-74bb5282a09ec095a7ff810c62f79cc64e187686.tar.xz
mass update of files to have native line endings
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/scripting/Engines/LSLEngine/LSLHandler/LSL_OPCODE_IL_processor.cs')
-rw-r--r--OpenSim/Region/Environment/Scenes/scripting/Engines/LSLEngine/LSLHandler/LSL_OPCODE_IL_processor.cs702
1 files changed, 351 insertions, 351 deletions
diff --git a/OpenSim/Region/Environment/Scenes/scripting/Engines/LSLEngine/LSLHandler/LSL_OPCODE_IL_processor.cs b/OpenSim/Region/Environment/Scenes/scripting/Engines/LSLEngine/LSLHandler/LSL_OPCODE_IL_processor.cs
index 4b8f8d7..46f6845 100644
--- a/OpenSim/Region/Environment/Scenes/scripting/Engines/LSLEngine/LSLHandler/LSL_OPCODE_IL_processor.cs
+++ b/OpenSim/Region/Environment/Scenes/scripting/Engines/LSLEngine/LSLHandler/LSL_OPCODE_IL_processor.cs
@@ -1,351 +1,351 @@
1/* 1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/ 2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders. 3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4* 4*
5* Redistribution and use in source and binary forms, with or without 5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met: 6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright 7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer. 8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright 9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the 10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution. 11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the 12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products 13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission. 14* derived from this software without specific prior written permission.
15* 15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY 16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26* 26*
27*/ 27*/
28/* Original code: Tedd Hansen */ 28/* Original code: Tedd Hansen */
29using System; 29using System;
30 using System.Collections.Generic; 30 using System.Collections.Generic;
31 using System.Text; 31 using System.Text;
32 using System.Reflection; 32 using System.Reflection;
33 using System.Reflection.Emit; 33 using System.Reflection.Emit;
34 34
35 namespace OpenSim.Region.Scripting.LSL 35 namespace OpenSim.Region.Scripting.LSL
36 { 36 {
37 partial class LSO_Parser 37 partial class LSO_Parser
38 { 38 {
39 //LSO_Enums MyLSO_Enums = new LSO_Enums(); 39 //LSO_Enums MyLSO_Enums = new LSO_Enums();
40 40
41 internal bool LSL_PROCESS_OPCODE(ILGenerator il) 41 internal bool LSL_PROCESS_OPCODE(ILGenerator il)
42 { 42 {
43 43
44 byte bp1; 44 byte bp1;
45 UInt32 u32p1; 45 UInt32 u32p1;
46 UInt16 opcode = br_read(1)[0]; 46 UInt16 opcode = br_read(1)[0];
47 Common.SendToDebug("OPCODE: " + ((LSO_Enums.Operation_Table)opcode).ToString()); 47 Common.SendToDebug("OPCODE: " + ((LSO_Enums.Operation_Table)opcode).ToString());
48 string idesc = ((LSO_Enums.Operation_Table)opcode).ToString(); 48 string idesc = ((LSO_Enums.Operation_Table)opcode).ToString();
49 switch ((LSO_Enums.Operation_Table)opcode) 49 switch ((LSO_Enums.Operation_Table)opcode)
50 { 50 {
51 51
52 case LSO_Enums.Operation_Table.POP: 52 case LSO_Enums.Operation_Table.POP:
53 case LSO_Enums.Operation_Table.POPL: 53 case LSO_Enums.Operation_Table.POPL:
54 case LSO_Enums.Operation_Table.POPV: 54 case LSO_Enums.Operation_Table.POPV:
55 case LSO_Enums.Operation_Table.POPQ: 55 case LSO_Enums.Operation_Table.POPQ:
56 case LSO_Enums.Operation_Table.POPIP: 56 case LSO_Enums.Operation_Table.POPIP:
57 case LSO_Enums.Operation_Table.POPBP: 57 case LSO_Enums.Operation_Table.POPBP:
58 case LSO_Enums.Operation_Table.POPSP: 58 case LSO_Enums.Operation_Table.POPSP:
59 case LSO_Enums.Operation_Table.POPSLR: 59 case LSO_Enums.Operation_Table.POPSLR:
60 // ignore -- builds callframe 60 // ignore -- builds callframe
61 Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Pop);"); 61 Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Pop);");
62 il.Emit(OpCodes.Pop); 62 il.Emit(OpCodes.Pop);
63 break; 63 break;
64 case LSO_Enums.Operation_Table.POPARG: 64 case LSO_Enums.Operation_Table.POPARG:
65 Common.SendToDebug("Instruction " + idesc + ": Ignored"); 65 Common.SendToDebug("Instruction " + idesc + ": Ignored");
66 Common.SendToDebug("Instruction " + idesc + ": Description: Drop x bytes from the stack "); 66 Common.SendToDebug("Instruction " + idesc + ": Description: Drop x bytes from the stack ");
67 Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0)); 67 Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0));
68 break; 68 break;
69 69
70 // LONG 70 // LONG
71 case LSO_Enums.Operation_Table.STORE: 71 case LSO_Enums.Operation_Table.STORE:
72 case LSO_Enums.Operation_Table.STORES: 72 case LSO_Enums.Operation_Table.STORES:
73 case LSO_Enums.Operation_Table.STOREL: 73 case LSO_Enums.Operation_Table.STOREL:
74 case LSO_Enums.Operation_Table.STOREV: 74 case LSO_Enums.Operation_Table.STOREV:
75 case LSO_Enums.Operation_Table.STOREQ: 75 case LSO_Enums.Operation_Table.STOREQ:
76 case LSO_Enums.Operation_Table.STOREG: 76 case LSO_Enums.Operation_Table.STOREG:
77 case LSO_Enums.Operation_Table.STOREGS: 77 case LSO_Enums.Operation_Table.STOREGS:
78 case LSO_Enums.Operation_Table.STOREGL: 78 case LSO_Enums.Operation_Table.STOREGL:
79 case LSO_Enums.Operation_Table.STOREGV: 79 case LSO_Enums.Operation_Table.STOREGV:
80 case LSO_Enums.Operation_Table.STOREGQ: 80 case LSO_Enums.Operation_Table.STOREGQ:
81 case LSO_Enums.Operation_Table.LOADP: 81 case LSO_Enums.Operation_Table.LOADP:
82 case LSO_Enums.Operation_Table.LOADSP: 82 case LSO_Enums.Operation_Table.LOADSP:
83 case LSO_Enums.Operation_Table.LOADLP: 83 case LSO_Enums.Operation_Table.LOADLP:
84 case LSO_Enums.Operation_Table.LOADVP: 84 case LSO_Enums.Operation_Table.LOADVP:
85 case LSO_Enums.Operation_Table.LOADQP: 85 case LSO_Enums.Operation_Table.LOADQP:
86 case LSO_Enums.Operation_Table.PUSH: 86 case LSO_Enums.Operation_Table.PUSH:
87 case LSO_Enums.Operation_Table.PUSHS: 87 case LSO_Enums.Operation_Table.PUSHS:
88 case LSO_Enums.Operation_Table.PUSHL: 88 case LSO_Enums.Operation_Table.PUSHL:
89 case LSO_Enums.Operation_Table.PUSHV: 89 case LSO_Enums.Operation_Table.PUSHV:
90 case LSO_Enums.Operation_Table.PUSHQ: 90 case LSO_Enums.Operation_Table.PUSHQ:
91 case LSO_Enums.Operation_Table.PUSHG: 91 case LSO_Enums.Operation_Table.PUSHG:
92 case LSO_Enums.Operation_Table.PUSHGS: 92 case LSO_Enums.Operation_Table.PUSHGS:
93 case LSO_Enums.Operation_Table.PUSHGL: 93 case LSO_Enums.Operation_Table.PUSHGL:
94 case LSO_Enums.Operation_Table.PUSHGV: 94 case LSO_Enums.Operation_Table.PUSHGV:
95 case LSO_Enums.Operation_Table.PUSHGQ: 95 case LSO_Enums.Operation_Table.PUSHGQ:
96 Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0)); 96 Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0));
97 break; 97 break;
98 // None 98 // None
99 case LSO_Enums.Operation_Table.PUSHIP: 99 case LSO_Enums.Operation_Table.PUSHIP:
100 case LSO_Enums.Operation_Table.PUSHBP: 100 case LSO_Enums.Operation_Table.PUSHBP:
101 case LSO_Enums.Operation_Table.PUSHSP: 101 case LSO_Enums.Operation_Table.PUSHSP:
102 // Push Stack Top (Memory Address) to stack 102 // Push Stack Top (Memory Address) to stack
103 Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Ldc_I4, " + myHeader.SP + ");"); 103 Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Ldc_I4, " + myHeader.SP + ");");
104 Common.SendToDebug("Instruction " + idesc + ": Description: Pushing Stack Top (Memory Address from header) to stack"); 104 Common.SendToDebug("Instruction " + idesc + ": Description: Pushing Stack Top (Memory Address from header) to stack");
105 il.Emit(OpCodes.Ldc_I4, myHeader.SP); 105 il.Emit(OpCodes.Ldc_I4, myHeader.SP);
106 break; 106 break;
107 // BYTE 107 // BYTE
108 case LSO_Enums.Operation_Table.PUSHARGB: 108 case LSO_Enums.Operation_Table.PUSHARGB:
109 Common.SendToDebug("Param1: " + br_read(1)[0]); 109 Common.SendToDebug("Param1: " + br_read(1)[0]);
110 break; 110 break;
111 // INTEGER 111 // INTEGER
112 case LSO_Enums.Operation_Table.PUSHARGI: 112 case LSO_Enums.Operation_Table.PUSHARGI:
113 // TODO: What is size of integer? 113 // TODO: What is size of integer?
114 u32p1 = BitConverter.ToUInt32(br_read(4), 0); 114 u32p1 = BitConverter.ToUInt32(br_read(4), 0);
115 Common.SendToDebug("Instruction PUSHSP: il.Emit(OpCodes.Ldc_I4, " + u32p1 + ");"); 115 Common.SendToDebug("Instruction PUSHSP: il.Emit(OpCodes.Ldc_I4, " + u32p1 + ");");
116 Common.SendToDebug("Param1: " + u32p1); 116 Common.SendToDebug("Param1: " + u32p1);
117 il.Emit(OpCodes.Ldc_I4, u32p1); 117 il.Emit(OpCodes.Ldc_I4, u32p1);
118 break; 118 break;
119 // FLOAT 119 // FLOAT
120 case LSO_Enums.Operation_Table.PUSHARGF: 120 case LSO_Enums.Operation_Table.PUSHARGF:
121 // TODO: What is size of float? 121 // TODO: What is size of float?
122 Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0)); 122 Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0));
123 break; 123 break;
124 // STRING 124 // STRING
125 case LSO_Enums.Operation_Table.PUSHARGS: 125 case LSO_Enums.Operation_Table.PUSHARGS:
126 string s = Read_String(); 126 string s = Read_String();
127 Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Ldstr, \"" + s + "\");"); 127 Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Ldstr, \"" + s + "\");");
128 Common.SendToDebug("Param1: " + s); 128 Common.SendToDebug("Param1: " + s);
129 il.Emit(OpCodes.Ldstr, s); 129 il.Emit(OpCodes.Ldstr, s);
130 break; 130 break;
131 // VECTOR z,y,x 131 // VECTOR z,y,x
132 case LSO_Enums.Operation_Table.PUSHARGV: 132 case LSO_Enums.Operation_Table.PUSHARGV:
133 Common.SendToDebug("Param1 Z: " + BitConverter.ToUInt32(br_read(4), 0)); 133 Common.SendToDebug("Param1 Z: " + BitConverter.ToUInt32(br_read(4), 0));
134 Common.SendToDebug("Param1 Y: " + BitConverter.ToUInt32(br_read(4), 0)); 134 Common.SendToDebug("Param1 Y: " + BitConverter.ToUInt32(br_read(4), 0));
135 Common.SendToDebug("Param1 X: " + BitConverter.ToUInt32(br_read(4), 0)); 135 Common.SendToDebug("Param1 X: " + BitConverter.ToUInt32(br_read(4), 0));
136 break; 136 break;
137 // ROTATION s,z,y,x 137 // ROTATION s,z,y,x
138 case LSO_Enums.Operation_Table.PUSHARGQ: 138 case LSO_Enums.Operation_Table.PUSHARGQ:
139 Common.SendToDebug("Param1 S: " + BitConverter.ToUInt32(br_read(4), 0)); 139 Common.SendToDebug("Param1 S: " + BitConverter.ToUInt32(br_read(4), 0));
140 Common.SendToDebug("Param1 Z: " + BitConverter.ToUInt32(br_read(4), 0)); 140 Common.SendToDebug("Param1 Z: " + BitConverter.ToUInt32(br_read(4), 0));
141 Common.SendToDebug("Param1 Y: " + BitConverter.ToUInt32(br_read(4), 0)); 141 Common.SendToDebug("Param1 Y: " + BitConverter.ToUInt32(br_read(4), 0));
142 Common.SendToDebug("Param1 X: " + BitConverter.ToUInt32(br_read(4), 0)); 142 Common.SendToDebug("Param1 X: " + BitConverter.ToUInt32(br_read(4), 0));
143 break; 143 break;
144 // LONG 144 // LONG
145 case LSO_Enums.Operation_Table.PUSHARGE: 145 case LSO_Enums.Operation_Table.PUSHARGE:
146 u32p1 = BitConverter.ToUInt32(br_read(4), 0); 146 u32p1 = BitConverter.ToUInt32(br_read(4), 0);
147 //Common.SendToDebug("Instruction PUSHSP: il.Emit(OpCodes., " + u32p1 + ");"); 147 //Common.SendToDebug("Instruction PUSHSP: il.Emit(OpCodes., " + u32p1 + ");");
148 Common.SendToDebug("Instruction " + idesc + ": Ignoring (not in use according to doc)"); 148 Common.SendToDebug("Instruction " + idesc + ": Ignoring (not in use according to doc)");
149 //Common.SendToDebug("Instruction " + idesc + ": Description: Pushes X bytes of $00 onto the stack (used to put space for local variable memory for a call)"); 149 //Common.SendToDebug("Instruction " + idesc + ": Description: Pushes X bytes of $00 onto the stack (used to put space for local variable memory for a call)");
150 Common.SendToDebug("Param1: " + u32p1); 150 Common.SendToDebug("Param1: " + u32p1);
151 //il.Emit(OpCodes.ldc_i4, u32p1); 151 //il.Emit(OpCodes.ldc_i4, u32p1);
152 //if (u32p1 > 0) { 152 //if (u32p1 > 0) {
153 //for (int _ic=0; _ic < u32p1; _ic++) 153 //for (int _ic=0; _ic < u32p1; _ic++)
154 //{ 154 //{
155 // Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Ldnull);"); 155 // Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Ldnull);");
156 // il.Emit(OpCodes.Ldnull); 156 // il.Emit(OpCodes.Ldnull);
157 //} 157 //}
158 break; 158 break;
159 // BYTE 159 // BYTE
160 case LSO_Enums.Operation_Table.ADD: 160 case LSO_Enums.Operation_Table.ADD:
161 bp1 = br_read(1)[0]; 161 bp1 = br_read(1)[0];
162 Common.SendToDebug("Instruction " + idesc + ": Add type: " + ((LSO_Enums.OpCode_Add_TypeDefs)bp1).ToString()); 162 Common.SendToDebug("Instruction " + idesc + ": Add type: " + ((LSO_Enums.OpCode_Add_TypeDefs)bp1).ToString());
163 Common.SendToDebug("Param1: " + bp1); 163 Common.SendToDebug("Param1: " + bp1);
164 switch ((LSO_Enums.OpCode_Add_TypeDefs)bp1) 164 switch ((LSO_Enums.OpCode_Add_TypeDefs)bp1)
165 { 165 {
166 case LSO_Enums.OpCode_Add_TypeDefs.String: 166 case LSO_Enums.OpCode_Add_TypeDefs.String:
167 Common.SendToDebug("Instruction " + idesc 167 Common.SendToDebug("Instruction " + idesc
168 + ": il.Emit(OpCodes.Call, typeof(System.String).GetMethod(\"Concat\", new Type[] { typeof(object), typeof(object) }));"); 168 + ": il.Emit(OpCodes.Call, typeof(System.String).GetMethod(\"Concat\", new Type[] { typeof(object), typeof(object) }));");
169 il.Emit(OpCodes.Call, typeof(System.String).GetMethod 169 il.Emit(OpCodes.Call, typeof(System.String).GetMethod
170 ("Concat", new Type[] { typeof(object), typeof(object) })); 170 ("Concat", new Type[] { typeof(object), typeof(object) }));
171 171
172 break; 172 break;
173 case LSO_Enums.OpCode_Add_TypeDefs.UInt32: 173 case LSO_Enums.OpCode_Add_TypeDefs.UInt32:
174 default: 174 default:
175 Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Add);"); 175 Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Add);");
176 il.Emit(OpCodes.Add); 176 il.Emit(OpCodes.Add);
177 break; 177 break;
178 } 178 }
179 179
180 180
181 //il.Emit(OpCodes.Add, p1); 181 //il.Emit(OpCodes.Add, p1);
182 break; 182 break;
183 case LSO_Enums.Operation_Table.SUB: 183 case LSO_Enums.Operation_Table.SUB:
184 Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Sub);"); 184 Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Sub);");
185 bp1 = br_read(1)[0]; 185 bp1 = br_read(1)[0];
186 Common.SendToDebug("Param1: " + bp1); 186 Common.SendToDebug("Param1: " + bp1);
187 il.Emit(OpCodes.Sub); 187 il.Emit(OpCodes.Sub);
188 //il.Emit(OpCodes.Sub, p1); 188 //il.Emit(OpCodes.Sub, p1);
189 break; 189 break;
190 case LSO_Enums.Operation_Table.MUL: 190 case LSO_Enums.Operation_Table.MUL:
191 Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Mul);"); 191 Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Mul);");
192 bp1 = br_read(1)[0]; 192 bp1 = br_read(1)[0];
193 Common.SendToDebug("Param1: " + bp1); 193 Common.SendToDebug("Param1: " + bp1);
194 il.Emit(OpCodes.Mul); 194 il.Emit(OpCodes.Mul);
195 //il.Emit(OpCodes.Mul, p1); 195 //il.Emit(OpCodes.Mul, p1);
196 break; 196 break;
197 case LSO_Enums.Operation_Table.DIV: 197 case LSO_Enums.Operation_Table.DIV:
198 Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Div);"); 198 Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Div);");
199 bp1 = br_read(1)[0]; 199 bp1 = br_read(1)[0];
200 Common.SendToDebug("Param1: " + bp1); 200 Common.SendToDebug("Param1: " + bp1);
201 il.Emit(OpCodes.Div); 201 il.Emit(OpCodes.Div);
202 //il.Emit(OpCodes.Div, p1); 202 //il.Emit(OpCodes.Div, p1);
203 break; 203 break;
204 case LSO_Enums.Operation_Table.EQ: 204 case LSO_Enums.Operation_Table.EQ:
205 Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Ceq);"); 205 Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Ceq);");
206 bp1 = br_read(1)[0]; 206 bp1 = br_read(1)[0];
207 Common.SendToDebug("Param1: " + bp1); 207 Common.SendToDebug("Param1: " + bp1);
208 il.Emit(OpCodes.Ceq); 208 il.Emit(OpCodes.Ceq);
209 //il.Emit(OpCodes.Ceq, p1); 209 //il.Emit(OpCodes.Ceq, p1);
210 break; 210 break;
211 case LSO_Enums.Operation_Table.NEQ: 211 case LSO_Enums.Operation_Table.NEQ:
212 case LSO_Enums.Operation_Table.LEQ: 212 case LSO_Enums.Operation_Table.LEQ:
213 case LSO_Enums.Operation_Table.GEQ: 213 case LSO_Enums.Operation_Table.GEQ:
214 case LSO_Enums.Operation_Table.LESS: 214 case LSO_Enums.Operation_Table.LESS:
215 Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Clt_Un);"); 215 Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Clt_Un);");
216 bp1 = br_read(1)[0]; 216 bp1 = br_read(1)[0];
217 Common.SendToDebug("Param1: " + bp1); 217 Common.SendToDebug("Param1: " + bp1);
218 il.Emit(OpCodes.Clt_Un); 218 il.Emit(OpCodes.Clt_Un);
219 //il.Emit(OpCodes.Clt, p1); 219 //il.Emit(OpCodes.Clt, p1);
220 break; 220 break;
221 case LSO_Enums.Operation_Table.GREATER: 221 case LSO_Enums.Operation_Table.GREATER:
222 Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Cgt_Un);"); 222 Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Cgt_Un);");
223 bp1 = br_read(1)[0]; 223 bp1 = br_read(1)[0];
224 Common.SendToDebug("Param1: " + bp1); 224 Common.SendToDebug("Param1: " + bp1);
225 il.Emit(OpCodes.Cgt_Un); 225 il.Emit(OpCodes.Cgt_Un);
226 //il.Emit(OpCodes.Cgt, p1); 226 //il.Emit(OpCodes.Cgt, p1);
227 break; 227 break;
228 case LSO_Enums.Operation_Table.MOD: 228 case LSO_Enums.Operation_Table.MOD:
229 case LSO_Enums.Operation_Table.BOOLOR: 229 case LSO_Enums.Operation_Table.BOOLOR:
230 bp1 = br_read(1)[0]; 230 bp1 = br_read(1)[0];
231 Common.SendToDebug("Param1: " + bp1); 231 Common.SendToDebug("Param1: " + bp1);
232 break; 232 break;
233 // LONG 233 // LONG
234 case LSO_Enums.Operation_Table.JUMP: 234 case LSO_Enums.Operation_Table.JUMP:
235 Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0)); 235 Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0));
236 break; 236 break;
237 // BYTE, LONG 237 // BYTE, LONG
238 case LSO_Enums.Operation_Table.JUMPIF: 238 case LSO_Enums.Operation_Table.JUMPIF:
239 case LSO_Enums.Operation_Table.JUMPNIF: 239 case LSO_Enums.Operation_Table.JUMPNIF:
240 Common.SendToDebug("Param1: " + br_read(1)[0]); 240 Common.SendToDebug("Param1: " + br_read(1)[0]);
241 Common.SendToDebug("Param2: " + BitConverter.ToUInt32(br_read(4), 0)); 241 Common.SendToDebug("Param2: " + BitConverter.ToUInt32(br_read(4), 0));
242 break; 242 break;
243 // LONG 243 // LONG
244 case LSO_Enums.Operation_Table.STATE: 244 case LSO_Enums.Operation_Table.STATE:
245 bp1 = br_read(1)[0]; 245 bp1 = br_read(1)[0];
246 //il.Emit(OpCodes.Ld); // Load local variable 0 onto stack 246 //il.Emit(OpCodes.Ld); // Load local variable 0 onto stack
247 //il.Emit(OpCodes.Ldc_I4, 0); // Push index position 247 //il.Emit(OpCodes.Ldc_I4, 0); // Push index position
248 //il.Emit(OpCodes.Ldstr, EventList[p1]); // Push value 248 //il.Emit(OpCodes.Ldstr, EventList[p1]); // Push value
249 //il.Emit(OpCodes.Stelem_Ref); // Perform array[index] = value 249 //il.Emit(OpCodes.Stelem_Ref); // Perform array[index] = value
250 break; 250 break;
251 case LSO_Enums.Operation_Table.CALL: 251 case LSO_Enums.Operation_Table.CALL:
252 Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0)); 252 Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0));
253 break; 253 break;
254 // BYTE 254 // BYTE
255 case LSO_Enums.Operation_Table.CAST: 255 case LSO_Enums.Operation_Table.CAST:
256 bp1 = br_read(1)[0]; 256 bp1 = br_read(1)[0];
257 Common.SendToDebug("Instruction " + idesc + ": Cast to type: " + ((LSO_Enums.OpCode_Cast_TypeDefs)bp1)); 257 Common.SendToDebug("Instruction " + idesc + ": Cast to type: " + ((LSO_Enums.OpCode_Cast_TypeDefs)bp1));
258 Common.SendToDebug("Param1: " + bp1); 258 Common.SendToDebug("Param1: " + bp1);
259 switch ((LSO_Enums.OpCode_Cast_TypeDefs)bp1) 259 switch ((LSO_Enums.OpCode_Cast_TypeDefs)bp1)
260 { 260 {
261 case LSO_Enums.OpCode_Cast_TypeDefs.String: 261 case LSO_Enums.OpCode_Cast_TypeDefs.String:
262 Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Calli, typeof(System.Convert).GetMethod(\"ToString\", new Type[] { typeof(object) }));"); 262 Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Calli, typeof(System.Convert).GetMethod(\"ToString\", new Type[] { typeof(object) }));");
263 //il.Emit(OpCodes.Box, typeof (UInt32)); 263 //il.Emit(OpCodes.Box, typeof (UInt32));
264 il.Emit(OpCodes.Calli, typeof(Common).GetMethod 264 il.Emit(OpCodes.Calli, typeof(Common).GetMethod
265 ("Cast_ToString", new Type[] { typeof(object) })); 265 ("Cast_ToString", new Type[] { typeof(object) }));
266 266
267 //il.Emit(OpCodes.Box, typeof(System.UInt32) ); 267 //il.Emit(OpCodes.Box, typeof(System.UInt32) );
268 //il.Emit(OpCodes.Box, typeof(string)); 268 //il.Emit(OpCodes.Box, typeof(string));
269 269
270 //il.Emit(OpCodes.Conv_R8); 270 //il.Emit(OpCodes.Conv_R8);
271 //il.Emit(OpCodes.Call, typeof(System.Convert).GetMethod 271 //il.Emit(OpCodes.Call, typeof(System.Convert).GetMethod
272 // ("ToString", new Type[] { typeof(float) })); 272 // ("ToString", new Type[] { typeof(float) }));
273 273
274 break; 274 break;
275 default: 275 default:
276 Common.SendToDebug("Instruction " + idesc + ": Unknown cast type!"); 276 Common.SendToDebug("Instruction " + idesc + ": Unknown cast type!");
277 break; 277 break;
278 } 278 }
279 break; 279 break;
280 // LONG 280 // LONG
281 case LSO_Enums.Operation_Table.STACKTOS: 281 case LSO_Enums.Operation_Table.STACKTOS:
282 case LSO_Enums.Operation_Table.STACKTOL: 282 case LSO_Enums.Operation_Table.STACKTOL:
283 Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0)); 283 Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0));
284 break; 284 break;
285 // BYTE 285 // BYTE
286 case LSO_Enums.Operation_Table.PRINT: 286 case LSO_Enums.Operation_Table.PRINT:
287 case LSO_Enums.Operation_Table.CALLLIB: 287 case LSO_Enums.Operation_Table.CALLLIB:
288 Common.SendToDebug("Param1: " + br_read(1)[0]); 288 Common.SendToDebug("Param1: " + br_read(1)[0]);
289 break; 289 break;
290 // SHORT 290 // SHORT
291 case LSO_Enums.Operation_Table.CALLLIB_TWO_BYTE: 291 case LSO_Enums.Operation_Table.CALLLIB_TWO_BYTE:
292 // TODO: What is size of short? 292 // TODO: What is size of short?
293 UInt16 U16p1 = BitConverter.ToUInt16(br_read(2), 0); 293 UInt16 U16p1 = BitConverter.ToUInt16(br_read(2), 0);
294 Common.SendToDebug("Instruction " + idesc + ": Builtin Command: " + ((LSO_Enums.BuiltIn_Functions)U16p1).ToString()); 294 Common.SendToDebug("Instruction " + idesc + ": Builtin Command: " + ((LSO_Enums.BuiltIn_Functions)U16p1).ToString());
295 Common.SendToDebug("Param1: " + U16p1); 295 Common.SendToDebug("Param1: " + U16p1);
296 switch ((LSO_Enums.BuiltIn_Functions)U16p1) 296 switch ((LSO_Enums.BuiltIn_Functions)U16p1)
297 { 297 {
298 case LSO_Enums.BuiltIn_Functions.llSay: 298 case LSO_Enums.BuiltIn_Functions.llSay:
299 Common.SendToDebug("Instruction " + idesc + " " + ((LSO_Enums.BuiltIn_Functions)U16p1).ToString() 299 Common.SendToDebug("Instruction " + idesc + " " + ((LSO_Enums.BuiltIn_Functions)U16p1).ToString()
300 + ": Mapped to internal function"); 300 + ": Mapped to internal function");
301 301
302 //il.Emit(OpCodes.Ldstr, "INTERNAL COMMAND: llSay({0}, \"{1}\""); 302 //il.Emit(OpCodes.Ldstr, "INTERNAL COMMAND: llSay({0}, \"{1}\"");
303 //il.Emit(OpCodes.Call, typeof(IL_Helper).GetMethod("ReverseFormatString", 303 //il.Emit(OpCodes.Call, typeof(IL_Helper).GetMethod("ReverseFormatString",
304 // new Type[] { typeof(string), typeof(UInt32), typeof(string) } 304 // new Type[] { typeof(string), typeof(UInt32), typeof(string) }
305 //)); 305 //));
306 306
307 307
308 //il.Emit(OpCodes.Pop); 308 //il.Emit(OpCodes.Pop);
309 //il.Emit(OpCodes.Call, 309 //il.Emit(OpCodes.Call,
310 // typeof(Console).GetMethod("WriteLine", 310 // typeof(Console).GetMethod("WriteLine",
311 // new Type[] { typeof(string) } 311 // new Type[] { typeof(string) }
312 //)); 312 //));
313 313
314 314
315 il.Emit(OpCodes.Call, 315 il.Emit(OpCodes.Call,
316 typeof(Common).GetMethod("SendToLog", 316 typeof(Common).GetMethod("SendToLog",
317 new Type[] { typeof(string) } 317 new Type[] { typeof(string) }
318 )); 318 ));
319 319
320 320
321 321
322 //il.Emit(OpCodes.Pop); 322 //il.Emit(OpCodes.Pop);
323 323
324 //il.Emit(OpCodes.Ldind_I2, 0); 324 //il.Emit(OpCodes.Ldind_I2, 0);
325 325
326 //il.Emit(OpCodes.Call, typeof(string).GetMethod("Format", new Type[] { typeof(string), typeof(object) })); 326 //il.Emit(OpCodes.Call, typeof(string).GetMethod("Format", new Type[] { typeof(string), typeof(object) }));
327 //il.EmitCalli(OpCodes.Calli, 327 //il.EmitCalli(OpCodes.Calli,
328 //il.Emit(OpCodes.Call, typeof().GetMethod 328 //il.Emit(OpCodes.Call, typeof().GetMethod
329 // ("llSay", new Type[] { typeof(UInt32), typeof(string) })); 329 // ("llSay", new Type[] { typeof(UInt32), typeof(string) }));
330 break; 330 break;
331 default: 331 default:
332 Common.SendToDebug("Instruction " + idesc + ": " + ((LSO_Enums.BuiltIn_Functions)U16p1).ToString() + ": INTERNAL COMMAND NOT IMPLEMENTED"); 332 Common.SendToDebug("Instruction " + idesc + ": " + ((LSO_Enums.BuiltIn_Functions)U16p1).ToString() + ": INTERNAL COMMAND NOT IMPLEMENTED");
333 break; 333 break;
334 } 334 }
335 335
336 //Common.SendToDebug("Instruction " + idesc + ": DEBUG: Faking return code:"); 336 //Common.SendToDebug("Instruction " + idesc + ": DEBUG: Faking return code:");
337 //Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Ldc_I4, 0);"); 337 //Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Ldc_I4, 0);");
338 //il.Emit(OpCodes.Ldc_I4, 0); 338 //il.Emit(OpCodes.Ldc_I4, 0);
339 break; 339 break;
340 340
341 // RETURN 341 // RETURN
342 case LSO_Enums.Operation_Table.RETURN: 342 case LSO_Enums.Operation_Table.RETURN:
343 343
344 Common.SendToDebug("Last OPCODE was return command. Code chunk execution complete."); 344 Common.SendToDebug("Last OPCODE was return command. Code chunk execution complete.");
345 return true; 345 return true;
346 } 346 }
347 return false; 347 return false;
348 } 348 }
349 349
350 } 350 }
351 } 351 }