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