diff --git a/asm/listing.c b/asm/listing.c index 9d263769..f1215660 100644 --- a/asm/listing.c +++ b/asm/listing.c @@ -208,7 +208,7 @@ static void list_size(int64_t offset, const char *tag, uint64_t size) if (list_option('d')) fmt = "<%s %"PRIu64">"; else - fmt = "<%s %"PRIX64">"; + fmt = "<%s %"PRIX64"h>"; snprintf(buf, sizeof buf, fmt, tag, size); list_out(offset, buf); diff --git a/asm/nasm.c b/asm/nasm.c index 6d73a5f5..7b6494e4 100644 --- a/asm/nasm.c +++ b/asm/nasm.c @@ -1517,25 +1517,22 @@ static void process_insn(insn *instruction) * (usually to 1) when called. */ if (!pass_final()) { + int64_t start = location.offset; for (n = 1; n <= instruction->times; n++) { l = insn_size(location.segment, location.offset, globalbits, instruction); - - if (list_option('p')) { - if (l > 0) { - struct out_data dummy; - memset(&dummy, 0, sizeof dummy); - dummy.type = OUT_RESERVE; - dummy.offset = location.offset; - dummy.size = l; - lfmt->output(&dummy); - } - } - /* l == -1 -> invalid instruction */ if (l != -1) increment_offset(l); } + if (list_option('p')) { + struct out_data dummy; + memset(&dummy, 0, sizeof dummy); + dummy.type = OUT_RAWDATA; /* Handled specially with .data NULL */ + dummy.offset = start; + dummy.size = location.offset - start; + lfmt->output(&dummy); + } } else { l = assemble(location.segment, location.offset, globalbits, instruction);