diff options
author | Michael Forney <mforney@mforney.org> | 2019-05-08 18:29:28 -0700 |
---|---|---|
committer | Quentin Carbonneaux <quentin@c9x.me> | 2021-10-25 18:37:12 +0200 |
commit | 5f994fed4e17bd65fc3958b5a8aab577a8948b9f (patch) | |
tree | 0efd3bb4f0875da20b29d7efb16a491b5a247a8e | |
parent | fcdef10dae54d7124aca9ccbefe53baa8e67267d (diff) | |
download | roux-5f994fed4e17bd65fc3958b5a8aab577a8948b9f.tar.gz |
arm64: handle slots
-rw-r--r-- | arm64/emit.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/arm64/emit.c b/arm64/emit.c index cd0a2b1..76588ed 100644 --- a/arm64/emit.c +++ b/arm64/emit.c @@ -220,8 +220,17 @@ emitf(char *s, Ins *i, E *e) c = *s++; assert(c == '0' || c == '1'); r = i->arg[c - '0']; - assert(isreg(r) && "TODO emit non reg addresses"); - fprintf(e->f, "[%s]", rname(r.val, Kl)); + switch (rtype(r)) { + default: + die("todo (arm emit): unhandled ref"); + case RTmp: + assert(isreg(r)); + fprintf(e->f, "[%s]", rname(r.val, Kl)); + break; + case RSlot: + fprintf(e->f, "[sp, %"PRIu64"]", slot(r.val, e)); + break; + } break; } } |