Author: jquelin
Date: Fri Jan 9 01:23:56 2009
New Revision: 35253
Modified:
trunk/languages/befunge/befunge.pir
trunk/languages/befunge/maths.pir
Log:
instruction ! implemented (logical not)
Modified: trunk/languages/befunge/befunge.pir
==============================================================================
--- trunk/languages/befunge/befunge.pir (original)
+++ trunk/languages/befunge/befunge.pir Fri Jan 9 01:23:56 2009
@@ -89,7 +89,10 @@
if char == '<' goto FLOW_GO_WEST
# flow control
+
# math functions
+ if char == '!' goto MATHS_NOT
+
# stack operations
if char == ':' goto STACK_DUP
@@ -97,6 +100,11 @@
if char == 'p' goto IO_PUT_VALUE
# unknown instruction
+ if char == ' ' goto MOVE_PC
+ print "unknown instruction: "
+ print char
+ print "\n"
+ end
goto MOVE_PC
=pod
@@ -114,7 +122,7 @@
eq S0, "*", MATHS_MUL
eq S0, "/", MATHS_DIV
eq S0, "%", MATHS_MOD
- eq S0, "!", MATHS_NOT
+ #eq S0, "!", MATHS_NOT
# Stack operations.
#eq S0, ":", STACK_DUP
@@ -160,6 +168,10 @@
goto MOVE_PC
# maths instructions
+ MATHS_NOT:
+ maths__not()
+ goto MOVE_PC
+
MATHS_PUSH_NUMBER:
maths__push_number()
goto MOVE_PC
Modified: trunk/languages/befunge/maths.pir
==============================================================================
--- trunk/languages/befunge/maths.pir (original)
+++ trunk/languages/befunge/maths.pir Fri Jan 9 01:23:56 2009
@@ -2,6 +2,19 @@
.macro_const RANDMAX 65536.0
+#
+# maths__not()
+#
+# logical not.
+# befunge stack:
+# before: ... a
+# after: ... not(a)
+#
+.sub "maths__not"
+ $I0 = stack__pop()
+ $I0 = not $I0
+ stack_push($I0)
+.end
#
# push number on befunge's stack.
@@ -127,18 +140,6 @@
push P2, I12
branch MOVE_PC
-# Logical not.
-# Befunge Stack:
-# before: ... a
-# after: ... not(a)
-MATHS_NOT:
- set I10, P2
- unless I10, MATHS_NOT_POP_1
- pop I10, P2
-MATHS_NOT_POP_1:
- not I10, I10
- push P2, I10
- branch MOVE_PC
=cut