projects
/
rrq
/
rrqforth.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
3087a82
)
debugging FIND
author
Ralph Ronnquist
<ralph.ronnquist@gmail.com>
Wed, 19 May 2021 07:46:50 +0000
(17:46 +1000)
committer
Ralph Ronnquist
<ralph.ronnquist@gmail.com>
Wed, 19 May 2021 07:46:50 +0000
(17:46 +1000)
wordlists.asm
patch
|
blob
|
history
diff --git
a/wordlists.asm
b/wordlists.asm
index c67e6c9f7e5e06963c397568b968029e98e17024..705f360927b5dd001be626ecdde81721efa63b12 100644
(file)
--- a/
wordlists.asm
+++ b/
wordlists.asm
@@
-98,37
+98,38
@@
p_strncmp_end:
push rcx
next
push rcx
next
- WORD p_find,'FIND'
- ;; ( chars
length -- [
0 ]|[ tfa ] )
+ WORD p_find,'FIND'
,fasm
+ ;; ( chars
* length -- [ chars* length
0 ]|[ tfa ] )
;; Search the current wordlists for the given pname
pushr rsi
mov rcx,[p_wordlist_DFA]
;; Search the current wordlists for the given pname
pushr rsi
mov rcx,[p_wordlist_DFA]
- mov rcx,qword [rcx]
- mov rbx,
[rsp]
- mov r
ax,[rsp+8]
+ mov rcx,qword [rcx]
; use rcx for word list traversing
+ mov rbx,
qword [rsp] ; rbx is input length
+ mov r
si,qword [rsp+8] ; rsi is input chars*
p_find_loop:
cmp rcx,0
p_find_loop:
cmp rcx,0
- je p_find_notfound
+ je p_find_notfound
; jump at end of word list
cmp rbx,qword [rcx+16] ; compare lengths
cmp rbx,qword [rcx+16] ; compare lengths
- jne p_find_nextword
+ jne p_find_nextword
; jump on length mismatch
push rcx ; save tfa for later
;; check word
push rcx ; save tfa for later
;; check word
- push r
ax
+ push r
si ; input chars
tfa2pname rcx
tfa2pname rcx
- push rcx
- push rbx
+ push rcx
; word chars
+ push rbx
; length
DOFORTH p_strncmp
pop rax ; return value
pop rcx ; restore tfa
cmp rax,0
je p_find_found
DOFORTH p_strncmp
pop rax ; return value
pop rcx ; restore tfa
cmp rax,0
je p_find_found
- mov rbx,[rsp]
- mov r
ax,
[rsp+8]
+ mov rbx,
qword
[rsp]
+ mov r
si,qword
[rsp+8]
p_find_nextword:
p_find_nextword:
- mov rcx,[rcx]
+ mov rcx,
qword
[rcx]
jmp p_find_loop
p_find_notfound:
xor rcx,rcx
jmp p_find_loop
p_find_notfound:
xor rcx,rcx
+ sub rsp,16
p_find_found:
add rsp,8
mov qword [rsp],rcx ; replace with tfa / 0
p_find_found:
add rsp,8
mov qword [rsp],rcx ; replace with tfa / 0