gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
mjc2wsl - neg command
[mjc2wsl.git] / src / mjc2wsl.java
index c45de80..16b0e37 100644 (file)
@@ -253,6 +253,13 @@ public class mjc2wsl{
                return res;
        }
        
+       private String cmdPopEStack() {
+               String res = "mjvm_estack := TAIL(mjvm_estack);";
+               if (genPrintEStackOnChange) res +="PRINT(\"eStack\",mjvm_estack);";
+               return res;
+       }
+       
+       
        private String getTopTwo(){
                return cmdFromEStack("tempa") + "\n" + cmdFromEStack("tempb");
        }
@@ -403,7 +410,18 @@ public class mjc2wsl{
                                break;
                        }
 
-                       //TODO neg, shl, shr, inc
+                       case neg :{
+                               prl(getTop());
+                               prl(cmdToEStack("-tempa"));
+                               break;
+                       }                       
+                       //TODO shl, shr
+                       
+                       case inc  : {
+                               int b1 = get(), b2 = get();
+                               prl(loc(b1)+" := " +loc(b1)+" + "+b2);
+                               break;
+                       }
                        //TODO new_ newarray
                        case new_ :
                                        get();//needs a short, but a byte will be taken bellow as well
@@ -415,7 +433,12 @@ public class mjc2wsl{
                        }
                        //TODO aload, asstore, baload, bastore
                        //TODO arraylength
-                       //TODO pop, dup, dup2
+                       //TODO dup, dup2
+                       
+                       case pop : {
+                                       prl(cmdPopEStack());
+                                       break;                                  
+                       }
                        
                        case jmp: {
                                prl("CALL a" + (counter + get2()) + ";");
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner