commit 26e5a5edb6dac458b076c3fb15def59d07600d25
parent f788f8f17a41845687f0743965502d0802a72af3
Author: Henry Wilson <m3henry@googlemail.com>
Date: Wed, 2 Aug 2017 13:44:01 +0100
begin codefield flags
Diffstat:
5 files changed, 27 insertions(+), 10 deletions(-)
diff --git a/compiler.s b/compiler.s
@@ -158,10 +158,10 @@ verb forth THEN "THEN" immediate
do store
endword
-#verb forth STRIPFLAGS
-# const 0x0000FFFFFFFFFFFF
-# do AND
-# endword
+verb forth STRIPFLAGS
+ const 0x0000FFFFFFFFFFFF
+ do AND
+ endword
verb forth GETFLAGS
const 0x0001000000000000
diff --git a/extras.s b/extras.s
@@ -1,6 +1,6 @@
# User Words
-verb forth greet GREET
+verb forth GREET
say "Hello, World!"
do CR
endword
diff --git a/macros.i b/macros.i
@@ -2,8 +2,12 @@
.quad \label
.endm
-.macro forthword
+.macro forthword immediate
+.ifnb \immediate
+ .quad 0x8000000000000000 + enter
+.else
.quad enter
+.endif
.endm
.macro endword
@@ -114,14 +118,21 @@
.else
.quad 0
.endif
-
+.ifnb \immediate
+\name\(): \type\()word \immediate
+.else
\name\(): \type\()word
+.endif
.endm
# Codeword macros
-.macro codeword
+.macro codeword immediate
+.ifnb \immediate
+ .quad 0x8000000000000008 + .
+.else
.quad . + 8
+.endif
.endm
.macro advance register
diff --git a/main.s b/main.s
@@ -29,7 +29,9 @@ _start: movq %rsp, rspbk
next:
mov (IP), WP
advance IP
- jmp *(WP)
+ mov $0x0000FFFFFFFFFFFF, ACC
+ and (WP), ACC # Strip flags off the codefield
+ jmp *ACC
enter:
push IP
@@ -151,7 +153,9 @@ verb code EXECUTE
mov TOS, WP
mov (SP), TOS
advance SP
- jmp *(WP)
+ mov $0x0000FFFFFFFFFFFF, ACC
+ and (WP), ACC # Strip flags off the codefield
+ jmp *ACC
dictionaryend:
# "STACK"
diff --git a/memory.s b/memory.s
@@ -2,6 +2,8 @@
verb code fetch "@>"
minstk 1
+ mov $0x0000FFFFFFFFFFFF, ACC
+ and ACC, TOS
mov (TOS), TOS
jmp next