From: Jonas Hvid Date: Fri, 6 Dec 2019 12:37:07 +0000 (+0100) Subject: Implement ',' X-Git-Url: https://git.rrq.au/?a=commitdiff_plain;h=06d7dcb24315373eebf8f1e8082bb39e33b3fcad;p=rrq%2Fjonasforth.git Implement ',' --- diff --git a/main.asm b/main.asm index cbf8a13..8af0955 100644 --- a/main.asm +++ b/main.asm @@ -366,6 +366,23 @@ forth_asm GET, '@' push rax next +;; Add two integers on the stack. +forth_asm PLUS, '+' + pop rax + pop rbx + add rax, rbx + push rax + next + +;; Calculate difference between two integers on the stack. The second number is +;; subtracted from the first. +forth_asm MINUS, '-' + pop rax + pop rbx + sub rbx, rax + push rbx + next + ;; Get the location of the STATE variable. It can be set with '!' and read with ;; '@'. forth STATE, 'STATE' @@ -385,6 +402,12 @@ forth HERE, 'HERE' dq LIT, here dq EXIT +forth COMMA, ',' + dq HERE, GET, PUT ; Set the memory at the address pointed to by HERE + dq HERE, GET, LIT, 8, PLUS ; Calculate new address for HERE to point to + dq HERE, PUT ; Update HERE to point to the new address + dq EXIT + forth MAIN, 'MAIN' dq HELLO dq INTERPRET