0
0
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:
H. Peter Anvin
2019-08-10 02:45:41 -07:00
parent 14b16442ce
commit a2c1c7d0d4
2 changed files with 10 additions and 13 deletions

View File

@@ -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);

View File

@@ -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);