Added -d/--debug and -m/--multi-pass switches to the disassembler. The latter

will make the disassembler run multiple preparation passes to find all
addresses where labels must be placed. Without -m some label addresses are
found in the final pass, where the disassembler cannot make use of them.
This commit is contained in:
Kugel Fuhr
2025-06-20 13:00:12 +02:00
parent c520455b2b
commit 4c81eacefe
7 changed files with 113 additions and 15 deletions

View File

@@ -59,8 +59,8 @@ extern const char CfgExt[]; /* Config file extension */
/* Flags and other command line stuff */
extern unsigned char DebugInfo; /* Add debug info to the object file */
extern unsigned char FormFeeds; /* Add form feeds to the output? */
extern unsigned char MultiPass; /* Run several passes to resolve labels */
extern unsigned char UseHexOffs; /* Use hexadecimal label offsets */
extern unsigned char PassCount; /* How many passed do we do? */
extern signed char NewlineAfterJMP;/* Add a newline after a JMP insn? */
extern signed char NewlineAfterRTS;/* Add a newline after a RTS insn? */
extern unsigned char HaveStartAddr; /* Flag for start address given */
@@ -70,6 +70,8 @@ extern long InputOffs; /* Offset into input file */
extern long InputSize; /* Number of bytes to read from input */
/* Stuff needed by many routines */
#define PASS_PREP 1 /* Preparation pass */
#define PASS_FINAL 2 /* Final pass generating output */
extern unsigned Pass; /* Disassembler pass */
extern char Now[128]; /* Current time as string */