When outputing a code listing, properly display
macros that expand to multiple instructions.
This commit is contained in:
parent
708d2cb029
commit
91d00a4fce
@ -37,7 +37,7 @@
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGES.
|
||||
*
|
||||
* $Id: //depot/aic7xxx/aic7xxx/aicasm/aicasm.c#22 $
|
||||
* $Id: //depot/aic7xxx/aic7xxx/aicasm/aicasm.c#23 $
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
@ -609,10 +609,10 @@ output_listing(char *ifilename)
|
||||
|
||||
while (line < cur_instr->srcline) {
|
||||
fgets(buf, sizeof(buf), ifile);
|
||||
fprintf(listfile, "\t\t%s", buf);
|
||||
fprintf(listfile, " \t%s", buf);
|
||||
line++;
|
||||
}
|
||||
fprintf(listfile, "%03x %02x%02x%02x%02x", instrptr,
|
||||
fprintf(listfile, "%04x %02x%02x%02x%02x", instrptr,
|
||||
#if BYTE_ORDER == LITTLE_ENDIAN
|
||||
cur_instr->format.bytes[0],
|
||||
cur_instr->format.bytes[1],
|
||||
@ -624,14 +624,23 @@ output_listing(char *ifilename)
|
||||
cur_instr->format.bytes[1],
|
||||
cur_instr->format.bytes[0]);
|
||||
#endif
|
||||
fgets(buf, sizeof(buf), ifile);
|
||||
fprintf(listfile, "\t%s", buf);
|
||||
line++;
|
||||
/*
|
||||
* Macro expansions can cause several instructions
|
||||
* to be output for a single source line. Only
|
||||
* advance the line once in these cases.
|
||||
*/
|
||||
if (line == cur_instr->srcline) {
|
||||
fgets(buf, sizeof(buf), ifile);
|
||||
fprintf(listfile, "\t%s", buf);
|
||||
line++;
|
||||
} else {
|
||||
fprintf(listfile, "\n");
|
||||
}
|
||||
instrptr++;
|
||||
}
|
||||
/* Dump the remainder of the file */
|
||||
while(fgets(buf, sizeof(buf), ifile) != NULL)
|
||||
fprintf(listfile, "\t\t%s", buf);
|
||||
fprintf(listfile, " %s", buf);
|
||||
|
||||
fclose(ifile);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user