summaryrefslogtreecommitdiff
path: root/assemble.c
diff options
context:
space:
mode:
Diffstat (limited to 'assemble.c')
-rw-r--r--assemble.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/assemble.c b/assemble.c
index aade9d4c..dfc83a05 100644
--- a/assemble.c
+++ b/assemble.c
@@ -1811,14 +1811,17 @@ static void gencode(int32_t segment, int64_t offset, int bits,
warn_overflow(ea_data.bytes, opx);
s += ea_data.bytes;
if (ea_data.rip) {
- data -= insn_end - (offset+ea_data.bytes);
- type = OUT_REL4ADR;
+ out(offset, segment, &data,
+ OUT_REL4ADR, insn_end - offset,
+ ins->oprs[(c >> 3) & 7].segment,
+ ins->oprs[(c >> 3) & 7].wrt);
} else {
type = OUT_ADDRESS;
+ out(offset, segment, &data,
+ OUT_ADDRESS, ea_data.bytes,
+ ins->oprs[(c >> 3) & 7].segment,
+ ins->oprs[(c >> 3) & 7].wrt);
}
- out(offset, segment, &data, type, ea_data.bytes,
- ins->oprs[(c >> 3) & 7].segment,
- ins->oprs[(c >> 3) & 7].wrt);
break;
}
offset += s;