gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
mjc2wsl - FIX inc, forgot a ;
[mjc2wsl.git] / src / mjc2wsl.java
index c45de80..10e9c2c 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()) + ";");
@@ -463,24 +486,24 @@ public class mjc2wsl{
                        }
 
                        // read, print
-                       case read:{
+                       case bread:{
                                //TODO make it a char for read
                                message("char is read like a number", M_WAR);
                                prl(createComment("char is read like a number",C_SPEC));
                        }
-                       case bread: {
+                       case read: {
                                prl("tempa := @String_To_Num(@Read_Line(Standard_Input_Port));");
                                prl(cmdToEStack("tempa"));
                                break;
                        }
 
                        // the prints
-                       case print:{
+                       case bprint:{
                                // TODO need to make it a char on print
                                message("chars will be printed as number codes", M_WAR);
                                prl(createComment("char will be printed as a number code",C_SPEC));
                        }
-                       case bprint: {
+                       case print: {
                                // TODO printing numbers needs different lengths of spacing
                                prl(getTopTwo());
                                pr(createComment("print spacing",C_SPEC));
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner