From: Jonas Hvid Date: Thu, 21 Nov 2019 17:32:27 +0000 (+0100) Subject: Implement TYPE X-Git-Url: https://git.rrq.au/?a=commitdiff_plain;h=ad998e300dd04bbf4cf24e64911df9cc506487d3;p=rrq%2Fjonasforth.git Implement TYPE --- diff --git a/main.asm b/main.asm index 0a8ff4c..1fda85d 100644 --- a/main.asm +++ b/main.asm @@ -65,9 +65,25 @@ EMIT: popr rsi next +TYPE: + dq .start +.start: + mov rbx, rsi + mov rcx, rax + + mov rax, 1 + mov rdi, 1 + pop rdx ; Length + pop rsi ; Buffer + syscall + + mov rax, rcx + mov rsi, rbx + next + PUSH_HELLO_CHARS: dq .start - .start: +.start: push $A push 'o' push 'l' @@ -76,6 +92,13 @@ PUSH_HELLO_CHARS: push 'H' next +PUSH_TEST_STRING: + dq .start +.start: + push test_string + push test_string.length + next + HELLO: dq docol dq PUSH_HELLO_CHARS @@ -97,12 +120,19 @@ TERMINATE: MAIN: dq docol dq HELLO + dq PUSH_TEST_STRING + dq PUSH_TEST_STRING + dq TYPE + dq TYPE dq HELLO dq HELLO dq TERMINATE segment readable writable +test_string db 'Hi, this is a test.',$A +.length = $ - test_string + ;; Return stack rq $2000 return_stack_top: