Author: jquelin
Date: Fri Jan  9 02:33:21 2009
New Revision: 35270

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

Log:
instruction % implemented (modulus)


Modified: trunk/languages/befunge/befunge.pir
==============================================================================
--- trunk/languages/befunge/befunge.pir (original)
+++ trunk/languages/befunge/befunge.pir Fri Jan  9 02:33:21 2009
@@ -98,6 +98,7 @@
     if char == '+' goto MATHS_ADD
     if char == '-' goto MATHS_SUB
     if char == '/' goto MATHS_DIV
+    if char == '%' goto MATHS_MOD
     if char == '!' goto MATHS_NOT
     
     # stack operations
@@ -131,7 +132,7 @@
         #eq S0, "-", MATHS_SUB
         eq S0, "*", MATHS_MUL
         #eq S0, "/", MATHS_DIV
-        eq S0, "%", MATHS_MOD
+        #eq S0, "%", MATHS_MOD
         #eq S0, "!", MATHS_NOT
 
         # Stack operations.
@@ -202,6 +203,9 @@
   MATHS_DIV:
     maths__div()
     goto MOVE_PC
+  MATHS_MOD:
+    maths__mod()
+    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:33:21 2009
@@ -78,6 +78,23 @@
     stack__push($I2)
 .end
 
+
+#
+# maths__mod()
+#
+# modulus.
+# befunge stack:
+#   before:     ... a b
+#   after:      ... a%b
+#
+.sub "maths__mod"
+    $I1 = stack__pop()
+    $I0 = stack__pop()
+    $I2 = mod $I0, $I1
+    stack__push($I2)
+.end
+
+
 =pod
 
 # Create a pseudo-random number.
@@ -116,23 +133,6 @@
     push P2, I12
     branch MOVE_PC
 
-# Remainder.
-# Befunge Stack:
-#   before:     ... a b
-#   after:      ... a mod b
-MATHS_MOD:
-    set I11, P2
-    unless I11, MATHS_MOD_POP_1
-    pop I11, P2
-MATHS_MOD_POP_1:
-    set I10, P2
-    unless I10, MATHS_MOD_POP_2
-    pop I10, P2
-MATHS_MOD_POP_2:
-    mod I12, I10, I11
-    push P2, I12
-    branch MOVE_PC
-
 
 =cut
 

Reply via email to