projects
/
rrq
/
rrqforth.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
changed STR>TEMP to assembler
[rrq/rrqforth.git]
/
compile.asm
diff --git
a/compile.asm
b/compile.asm
index 72a8763375abfa406e77a9816f1df9cd66d723ed..c815291554239862cc17b422f4dfb1b92b947e9f 100644
(file)
--- a/
compile.asm
+++ b/
compile.asm
@@
-41,7
+41,7
@@
p_create_COPY:
WORD p_allot,'ALLOT'
;; ( n -- )
;; Allocate n bytes on the heap
WORD p_allot,'ALLOT'
;; ( n -- )
;; Allocate n bytes on the heap
- dq p_here, p_put_plus, p_
exit
+ dq p_here, p_put_plus, p_
return
WORD p_quote,"'"
;; ( "word" -- cfa )
WORD p_quote,"'"
;; ( "word" -- cfa )
@@
-50,22
+50,22
@@
p_create_COPY:
BRANCH 0,p_quote_end
dq p_tfa2cfa
p_quote_end:
BRANCH 0,p_quote_end
dq p_tfa2cfa
p_quote_end:
- dq p_
exit
+ dq p_
return
WORD p_bracketed_quote,"[']",doforth,IMMEDIATE
;; Compilation ( "word" -- cfa )
;; Compile down " LIT value "
WORD p_bracketed_quote,"[']",doforth,IMMEDIATE
;; Compilation ( "word" -- cfa )
;; Compile down " LIT value "
- dq p_literal, p_literal, p_comma,p_quote, p_comma, p_
exit
+ dq p_literal, p_literal, p_comma,p_quote, p_comma, p_
return
WORD p_comma,','
;; ( v -- )
;; Put cell value onto the heap and advance "HERE"
WORD p_comma,','
;; ( v -- )
;; Put cell value onto the heap and advance "HERE"
- dq p_here, p_literal, 8, p_get_n_increment, p_put, p_
exit
+ dq p_here, p_literal, 8, p_get_n_increment, p_put, p_
return
WORD p_Ccomma,'C,'
;; ( c -- )
;; Put byte value onto the heap and advance "HERE"
WORD p_Ccomma,'C,'
;; ( c -- )
;; Put byte value onto the heap and advance "HERE"
- dq p_here, p_Cput, p_literal, 1, p_here, p_put_plus, p_
exit
+ dq p_here, p_Cput, p_literal, 1, p_here, p_put_plus, p_
return
WORD p_does,"DOES>",fasm,IMMEDIATE
;; ( -- )
WORD p_does,"DOES>",fasm,IMMEDIATE
;; ( -- )
@@
-193,6
+193,8
@@
p_number_ALPHA:
cmp al,'Z'
jg p_number_alpha
sub al,'A'-10
cmp al,'Z'
jg p_number_alpha
sub al,'A'-10
+ cmp rax,qword [p_base_DFA]
+ jge p_number_BAD
jmp p_number_CONSUME
p_number_alpha:
cmp al,'a'
jmp p_number_CONSUME
p_number_alpha:
cmp al,'a'
@@
-200,6
+202,8
@@
p_number_alpha:
cmp al,'z'
jg p_number_BAD
sub al,'a'-10
cmp al,'z'
jg p_number_BAD
sub al,'a'-10
+ cmp rax,qword [p_base_DFA]
+ jge p_number_BAD
jmp p_number_CONSUME
p_number_BAD:
push qword 0
jmp p_number_CONSUME
p_number_BAD:
push qword 0
@@
-282,7
+286,8
@@
p_evaluate_stream_END:
dq p_literal, 1
p_evaluate_stream_BAD:
dq p_Rgt, p_input, p_put ; restore previous stream
dq p_literal, 1
p_evaluate_stream_BAD:
dq p_Rgt, p_input, p_put ; restore previous stream
- dq p_exit
+ dq p_literal,0, p_state, p_put ; set interactive mode
+ dq p_return
WORD p_colon,':'
;; ( -- )
WORD p_colon,':'
;; ( -- )
@@
-295,12
+300,12
@@
p_evaluate_stream_BAD:
dq p_tfa2cfa
dq p_put
dq p_right_bracket
dq p_tfa2cfa
dq p_put
dq p_right_bracket
- dq p_
exit
+ dq p_
return
WORD p_semicolon,';',,IMMEDIATE
;; ( -- )
WORD p_semicolon,';',,IMMEDIATE
;; ( -- )
- ;; Lay out p_
exit
, and set interpreting mode
- dq p_literal, p_
exit, p_comma, p_left_bracket, p_exit
+ ;; Lay out p_
return
, and set interpreting mode
+ dq p_literal, p_
return, p_comma, p_left_bracket, p_return
WORD p_immediate,'IMMEDIATE',fasm,IMMEDIATE
;; ( -- )
WORD p_immediate,'IMMEDIATE',fasm,IMMEDIATE
;; ( -- )
@@
-342,4
+347,4
@@
p_load_file_badfile:
dq p_tell, p_dot, p_nl, p_emit
dq p_literal,1
p_load_file_exit:
dq p_tell, p_dot, p_nl, p_emit
dq p_literal,1
p_load_file_exit:
- dq p_
exit
+ dq p_
return