Author: jquelin
Date: Fri Jan  9 02:31:04 2009
New Revision: 35269

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

Log:
instruction / implemented (division)


Modified: trunk/languages/befunge/befunge.pir
==============================================================================
--- trunk/languages/befunge/befunge.pir (original)
+++ trunk/languages/befunge/befunge.pir Fri Jan  9 02:31:04 2009
@@ -97,6 +97,7 @@
     # math functions
     if char == '+' goto MATHS_ADD
     if char == '-' goto MATHS_SUB
+    if char == '/' goto MATHS_DIV
     if char == '!' goto MATHS_NOT
     
     # stack operations
@@ -129,7 +130,7 @@
         #eq S0, "+", MATHS_ADD
         #eq S0, "-", MATHS_SUB
         eq S0, "*", MATHS_MUL
-        eq S0, "/", MATHS_DIV
+        #eq S0, "/", MATHS_DIV
         eq S0, "%", MATHS_MOD
         #eq S0, "!", MATHS_NOT
 
@@ -198,6 +199,9 @@
   MATHS_ADD:
     maths__add()
     goto MOVE_PC
+  MATHS_DIV:
+    maths__div()
+    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:31:04 2009
@@ -63,6 +63,21 @@
 .end
 
 
+#
+# maths__div()
+#
+# division.
+# befunge stack:
+#   before:     ... a b
+#   after:      ... a/b
+#
+.sub "maths__div"
+    $I1 = stack__pop()
+    $I0 = stack__pop()
+    $I2 = $I0 / $I1
+    stack__push($I2)
+.end
+
 =pod
 
 # Create a pseudo-random number.
@@ -101,23 +116,6 @@
     push P2, I12
     branch MOVE_PC
 
-# Division.
-# Befunge Stack:
-#   before:     ... a b
-#   after:      ... a/b
-MATHS_DIV:
-    set I11, P2
-    unless I11, MATHS_DIV_POP_1
-    pop I11, P2
-MATHS_DIV_POP_1:
-    set I10, P2
-    unless I10, MATHS_DIV_POP_2
-    pop I10, P2
-MATHS_DIV_POP_2:
-    div I12, I10, I11
-    push P2, I12
-    branch MOVE_PC
-
 # Remainder.
 # Befunge Stack:
 #   before:     ... a b

Reply via email to