Author: jquelin
Date: Fri Jan  9 02:28:54 2009
New Revision: 35268

Modified:
   trunk/languages/befunge/befunge.pir
   trunk/languages/befunge/maths.pir

Log:
instruction + implemented (addition)


Modified: trunk/languages/befunge/befunge.pir
==============================================================================
--- trunk/languages/befunge/befunge.pir (original)
+++ trunk/languages/befunge/befunge.pir Fri Jan  9 02:28:54 2009
@@ -95,6 +95,7 @@
     if char == '#' goto FLOW_BRIDGE
     
     # math functions
+    if char == '+' goto MATHS_ADD
     if char == '-' goto MATHS_SUB
     if char == '!' goto MATHS_NOT
     
@@ -125,7 +126,7 @@
         eq S0, "@", FLOW_END
 
         # Math functions.
-        eq S0, "+", MATHS_ADD
+        #eq S0, "+", MATHS_ADD
         #eq S0, "-", MATHS_SUB
         eq S0, "*", MATHS_MUL
         eq S0, "/", MATHS_DIV
@@ -194,6 +195,9 @@
     goto MOVE_PC
 
     # maths instructions
+  MATHS_ADD:
+    maths__add()
+    goto MOVE_PC
   MATHS_NOT:
     maths__not()
     goto MOVE_PC

Modified: trunk/languages/befunge/maths.pir
==============================================================================
--- trunk/languages/befunge/maths.pir   (original)
+++ trunk/languages/befunge/maths.pir   Fri Jan  9 02:28:54 2009
@@ -29,6 +29,24 @@
 .end
 
 
+# ** math operations
+
+#
+# maths__add()
+#
+# addition.
+# befunge stack:
+#   before:     ... a b
+#   after:      ... a+b
+#
+.sub "maths__add"
+    $I1 = stack__pop()
+    $I0 = stack__pop()
+    $I2 = $I0 + $I1
+    stack__push($I2)
+.end
+
+
 #
 # maths__sub()
 #
@@ -66,24 +84,6 @@
     save I10
     ret
 
-
-# Addition.
-# Befunge Stack:
-#   before:     ... a b
-#   after:      ... a+b
-MATHS_ADD:
-    set I11, P2
-    unless I11, MATHS_ADD_POP_1
-    pop I11, P2
-MATHS_ADD_POP_1:
-    set I10, P2
-    unless I10, MATHS_ADD_POP_2
-    pop I10, P2
-MATHS_ADD_POP_2:
-    add I12, I10, I11
-    push P2, I12
-    branch MOVE_PC
-
 # Multiplication.
 # Befunge Stack:
 #   before:     ... a b

Reply via email to