mirror of
https://github.com/netwide-assembler/nasm.git
synced 2025-10-10 00:25:06 -04:00
listing: coalesce TIMES in non-final passes, print <len>, clarify hex
Merge TIMES in the nonfinal passes, there is no point in getting <len ...> an arbitrary number of times. Actually print <len> (OUT_RAWDATA without a data pointer), not <res> (OUT_RESERVE). Dropping the zero-fill for the hex format made the listing more manageable, but it also doesn't immediately look like hex, plus there is now the -Ld option. Put an h after hex (shorter than leading 0x) to make it obvious. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
This commit is contained in:
@@ -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);
|
||||
|
||||
21
asm/nasm.c
21
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);
|
||||
|
||||
Reference in New Issue
Block a user