From fdf1935e2cc4142bf1585a78844f5b7df0e1cd8f Mon Sep 17 00:00:00 2001 From: kitty Date: Thu, 22 Jan 2026 13:05:14 +1100 Subject: some macros --- jefs.s | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'jefs.s') diff --git a/jefs.s b/jefs.s index b9327dc..40ba54d 100644 --- a/jefs.s +++ b/jefs.s @@ -1,7 +1,53 @@ ; jewelforth ;; MACROS {{{ +%macro pspush 1 + lea r14, [r14-8] + mov qword [r14], r15 + mov r15, %1 +%endmacro + +%macro pspop 1 + mov %1, r15 + mov r15, qword [r14] + lea r14, [r14+8] +%endmacro + +;;; dictionary macros {{{ +%define mac_latest 0 ; updated through defdict + +%macro defdict 3 ; name asm-label flags + %strlen slen %1 + global lfa_%2 + lfa_%2: dq mac_latest + %define mac_latest lfa_%2 + ffa_%2: db %3 ; FFA + nfa_%2: dw slen ; NFA + db %1 +%endmacro + +%macro defword 3 + defdict %1, %2, %3 + %2: +%endmacro + +%macro defconst 4 ; ... value + defdict %1, %2, %3 + %define %2 %4 + pspush qword %4 + ret +%endmacro + +%macro defvar 4 ; ... default-value + %2: dq %4 + defdict %1, %2, %3 + pspush qword %2 + ret +%endmacro + %assign smudge_mask 0x1 +%assign immemdiate_mask 0x2 +;;; }}} ;; syscall %assign __NR_read 0 -- cgit v1.2.3