mirror of
https://github.com/kanaka/mal.git
synced 2024-09-19 09:38:28 +03:00
8a19f60386
- Reorder README to have implementation list after "learning tool" bullet. - This also moves tests/ and libs/ into impls. It would be preferrable to have these directories at the top level. However, this causes difficulties with the wasm implementations which need pre-open directories and have trouble with paths starting with "../../". So in lieu of that, symlink those directories to the top-level. - Move the run_argv_test.sh script into the tests directory for general hygiene.
50 lines
975 B
Plaintext
50 lines
975 B
Plaintext
;; Some useful macros
|
|
|
|
%ifndef MACROS_MAC
|
|
%define MACROS_MAC
|
|
|
|
;; Define a static data value
|
|
;;
|
|
;; static label value
|
|
;;
|
|
%macro static 2+
|
|
%1: %2
|
|
%1.len: equ $ - %1
|
|
%endmacro
|
|
|
|
;; Puts address of data in RSI, length in EDX
|
|
%macro load_static 1
|
|
mov rsi, %1
|
|
mov edx, %1.len
|
|
%endmacro
|
|
|
|
;; Define a symbol which can be compared against
|
|
;;
|
|
;; static_symbol name, string
|
|
;;
|
|
;; Example:
|
|
;;
|
|
;; static_symbol def_symbol, 'def!'
|
|
;;
|
|
%macro static_symbol 2
|
|
%strlen slen %2 ; length of string
|
|
|
|
%1: ISTRUC Array
|
|
AT Array.type, db maltype_symbol
|
|
AT Array.refcount, dw 1
|
|
AT Array.length, dd slen
|
|
AT Array.data, db %2
|
|
IEND
|
|
%endmacro
|
|
|
|
;; Macro for printing raw string
|
|
;;
|
|
%macro print_str_mac 1
|
|
mov rsi, %1 ; String address
|
|
mov rdx, %1.len ; Length of string
|
|
call print_rawstring
|
|
%endmacro
|
|
|
|
%endif
|
|
|