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