X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=logic.asm;h=56dd2db88254b8fbf190d3a69ddab35d64d8df28;hb=39427aee877cab09feea798b146e06dc7bfc25cc;hp=26963322797442ab1ddbb5a0afd485401b247301;hpb=bcb53ba8222ecba94f82880c98a23f2fc8a66161;p=rrq%2Frrqforth.git diff --git a/logic.asm b/logic.asm index 2696332..56dd2db 100644 --- a/logic.asm +++ b/logic.asm @@ -27,17 +27,15 @@ not qword [rsp] next - WORD p_false, 'FALSE',fasm + WORD p_false, 'FALSE',dovalue ;; ( -- 0 ) ;; Push a false flag, 0. - push qword 0 - next + dq 0 - WORD p_true, 'TRUE',fasm + WORD p_true, 'TRUE',dovalue ;; ( -- true ) ;; Return a true flag, -1. (non-zero) - push qword -1 - next + dq -1 pop_false_next: mov qword [rsp],0 @@ -54,18 +52,15 @@ pop_true_next: pop rax pop rbx cmp qword [rsp],rbx - jl p_within_not + jl pop_false_next cmp qword [rsp],rax - jge p_within_not - not rcx -p_within_not: - next - + jge pop_false_next + jmp pop_true_next + WORD p_0less, '0<',fasm ;; ( n -- flag ) ;; flag is true (non-zero) if and only if n is less than zero. - pop rax - cmp rax,qword [rsp] + cmp qword [rsp],0 jl pop_true_next jmp pop_false_next @@ -80,7 +75,7 @@ p_within_not: ;; ( n1 n2 -- flag ) ;; flag is true if and only if n1 is less than n2. pop rax - cmp rax,qword [rsp] + cmp qword [rsp],rax jl pop_true_next jmp pop_false_next @@ -88,7 +83,7 @@ p_within_not: ;; ( n1 n2 -- flag ) ;; flag is true if and only if n1 is less than n2. pop rax - cmp rax,qword [rsp] + cmp qword [rsp],rax jle pop_true_next jmp pop_false_next @@ -97,7 +92,7 @@ p_within_not: ;; flag is true if and only if x1 is bit-for-bit the same as ;; x2. pop rax - cmp rax,qword [rsp] + cmp qword [rsp],rax je pop_true_next jmp pop_false_next @@ -106,7 +101,7 @@ p_within_not: ;; flag is true if and only if x1 is bit-for-bit the same as ;; x2. pop rax - cmp qword [rsp], rax + cmp qword [rsp],rax jne pop_true_next jmp pop_false_next @@ -114,7 +109,7 @@ p_within_not: ;; ( n1 n2 -- flag ) ;; flag is true if and only if n1 is greater than n2. pop rax - cmp rax,qword [rsp] + cmp qword [rsp],rax jg pop_true_next jmp pop_false_next @@ -122,6 +117,6 @@ p_within_not: ;; ( n1 n2 -- flag ) ;; flag is true if and only if n1 is greater than n2. pop rax - cmp rax,qword [rsp] + cmp qword [rsp],rax jge pop_true_next jmp pop_false_next