diff options
Diffstat (limited to 'jefs.s')
| -rw-r--r-- | jefs.s | 46 |
1 files changed, 46 insertions, 0 deletions
@@ -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 |
