changeset 655:6b4d2b405442

More ECL stuff.
author Gauvain "GovanifY" Roussel-Tarbouriech <gauvain@govanify.com>
date Thu, 08 Aug 2019 17:01:42 +0200
parents ec7e888e88f3
children 988e5130fb00
files src/th06/ecl_vm.rs
diffstat 1 files changed, 49 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/th06/ecl_vm.rs
+++ b/src/th06/ecl_vm.rs
@@ -168,9 +168,58 @@ use std::rc::{Rc, Weak};
                 if self.comparison_reg != 0
                     Instruction::RelativeJump();
             }
+            // 35
+            Instruction::Call(sub, param1, param2) {
+                // does insane stuff with the stack, not implemented 
+            }
+ 
+            // 36
+            Instruction::Ret(frame, ip) {
+                // does insane stuff with the stack, not implemented 
+            }
+            // 37
+            Instruction::CallIfSuperior(sub, param1, param2, a, b) {
+                if(self._getval(b) <= self._getval(a)) {
+                    Instruction::Call(sub, param1, param2);
+                }
+            }
+            // 38
+            Instruction::CallIfSuperiorOrEqual(sub, param1, param2, a, b) {
+                if(self._getval(b) <= self._getval(a)) {
+                    Instruction::Call(sub, param1, param2);
+                }
+            }
+            // 39
+            Instruction::CallIfEqual(sub, param1, param2, a, b) {
+                if(self._getval(b) == self._getval(a)) {
+                    Instruction::Call(sub, param1, param2);
+                }
+            }
+            // 40 
+            Instruction::CallIfEqual(sub, param1, param2, a, b) {
+                if(self._getval(b) == self._getval(a)) {
+                    Instruction::Call(sub, param1, param2);
+                }
+            }
+            //41 
+            Instruction::CallIfInferior(sub, param1, param2, a, b) {
+                if(self._getval(a) < self._getval(b)) {
+                    Instruction::Call(sub, param1, param2);
+                }
+            }
+            //42 
+            Instruction::CallIfInferiorOrEqual(sub, param1, param2, a, b) {
+                if(self._getval(a) <= self._getval(b)) {
+                    Instruction::Call(sub, param1, param2);
+                }
+            }
 
 
 
 
 
 
+
+
+
+