diff options
| author | Mistivia <i@mistivia.com> | 2024-12-07 22:54:12 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2024-12-07 22:54:12 +0800 |
| commit | 3e6bf6091cc32cf11d61c0250bde9115208ad5d5 (patch) | |
| tree | d451ea9afa53610fd98b574676b53d932994d130 /assembler | |
| parent | 22b08dbf32e9c5de1f10c19897422168100fa639 (diff) | |
simplify asm language
Diffstat (limited to 'assembler')
| -rw-r--r-- | assembler/fvm-as.scm | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/assembler/fvm-as.scm b/assembler/fvm-as.scm index 555f36f..a057a63 100644 --- a/assembler/fvm-as.scm +++ b/assembler/fvm-as.scm @@ -39,10 +39,10 @@ (define pseudo-op-table (alist->hash-table '((rel . (pc add)) - (bpick . ((imm 8) mul bp add ld)) - (spick . ((imm 8) mul sp add ld)) - (bput . ((imm 8) mul bp add st)) - (sput . ((imm 8) mul bp add st))))) + (ldarg . ((imm 2) add (imm 8) mul bp add ld)) + (ldvar . ((imm -1) swap sub (imm 8) mul bp add ld)) + (starg . ((imm 2) add (imm 8) mul bp add st)) + (stvar . ((imm -1) swap sub (imm 8) mul bp add st))))) (define (is-pseudo-op? sym) (hash-table-ref/default pseudo-op-table sym #f)) @@ -60,6 +60,7 @@ (match lst (() (reverse ret)) (('imm num . r) (loop r (cons (list 'imm num) ret))) + (((? number? x) . r) (loop r (cons (list 'imm x) ret))) ((x . r) (if (keyword? x) (loop r (cons (list 'tag |
