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