diff options
| author | 2023-06-12 22:30:30 +0200 | |
|---|---|---|
| committer | 2023-06-12 22:30:30 +0200 | |
| commit | afa1cec439c370111cfd2c32d9fbb5c88acd6c7a (patch) | |
| tree | d0ef1003e55898c2e8bd8cebb2d0c94d0a7b98aa /amd64/emit.c | |
| parent | a5bb980335f5234f4901ae062e183e5bb72f845f (diff) | |
dumb
Diffstat (limited to 'amd64/emit.c')
| -rw-r--r-- | amd64/emit.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/amd64/emit.c b/amd64/emit.c index f872b49..ae3f45d 100644 --- a/amd64/emit.c +++ b/amd64/emit.c @@ -42,17 +42,16 @@ ref2oper(union ref r) enum { NOBASE = 99, NOINDEX = 99 }; -static struct oper -addmemoper(struct oper mem, struct oper add) +static void +addmemoper(struct oper *mem, struct oper add) { - assert(mem.t == OMEM); + assert(mem->t == OMEM); if (add.t == OIMM) { - mem.disp += add.imm; + mem->disp += add.imm; } else if (add.t == OREG) { - assert(mem.index == NOINDEX); - mem.index = add.reg; + assert(mem->index == NOINDEX); + mem->index = add.reg; } - return mem; } enum operpat { @@ -383,10 +382,10 @@ mkmemoper(union ref r) struct oper mem; if (addr->base.t == RTMP && ioper[addr->base.i].t == OMEM) { mem = ioper[addr->base.i]; - if (addr->index.t) addmemoper(mem, mkregoper(addr->index)); + if (addr->index.t) addmemoper(&mem, mkregoper(addr->index)); assert(!mem.shift); mem.shift = addr->shift; - addmemoper(mem, mkoper(OIMM, .imm = addr->disp)); + addmemoper(&mem, mkoper(OIMM, .imm = addr->disp)); return mem; } return mkoper(OMEM, .base = addr->base.t ? mkregoper(addr->base).reg : NOBASE, |