annotate lwasm/list.c @ 434:052c5f335a92

Fix bug in like terms collection in expression simplification Like term collection would lose the actual "variable" part of the term if the second term collected happened to have no coefficient. This would cause the expression to take the value of the calculated coefficient which is obviously wrong. Thanks to hider <stego@satx.rr.com> for reporting the bug and providing a proper test case. Observation: this bug has been present since the first pre-release of lwtools 3.0 when the algebraic expression system was introduced. Apparently people tend not to create expressions that trigger the like terms handler. The specific conditions require the symbol to be undefined and the second operand to the addition has to have no coefficient so it's likely a fairly rare scenario. Still, it is somewhat surprising that nobody tripped on it before now.
author William Astle <lost@l-w.ca>
date Mon, 23 Jan 2017 22:58:36 -0700
parents 1ebb5a0b2874
children 61580fc48f98
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
1 /*
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
2 list.c
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
3
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
4 Copyright © 2010 William Astle
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
5
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
6 This file is part of LWTOOLS.
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
7
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
8 LWTOOLS is free software: you can redistribute it and/or modify it under the
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
9 terms of the GNU General Public License as published by the Free Software
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
10 Foundation, either version 3 of the License, or (at your option) any later
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
11 version.
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
12
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
13 This program is distributed in the hope that it will be useful, but WITHOUT
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
16 more details.
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
17
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
18 You should have received a copy of the GNU General Public License along with
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
19 this program. If not, see <http://www.gnu.org/licenses/>.
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
20 */
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
21
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
22 #include <stdio.h>
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
23 #include <string.h>
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
24
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
25 #include <lw_alloc.h>
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
26 #include <lw_string.h>
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
27
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
28 #include "lwasm.h"
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
29 #include "instab.h"
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
30
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
31 void list_symbols(asmstate_t *as, FILE *of);
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
32
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
33 /*
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
34 Do listing
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
35 */
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
36 void do_list(asmstate_t *as)
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
37 {
50
f55650f5e9b8 Fixed problems with macro expansion supression
lost@l-w.ca
parents: 49
diff changeset
38 line_t *cl, *nl, *nl2;
106
43a3f1068027 Adjustments for list code
lost@l-w.ca
parents: 81
diff changeset
39 FILE *of = NULL;
0
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
40 int i;
50
f55650f5e9b8 Fixed problems with macro expansion supression
lost@l-w.ca
parents: 49
diff changeset
41 unsigned char *obytes = NULL;
49
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
42 int obytelen = 0;
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
43
14
5ecdc4dae84d Brought forward patch to make tabs in listings always display as 8 spaces wide by converting tabs to spaces
lost@l-w.ca
parents: 0
diff changeset
44 char *tc;
5ecdc4dae84d Brought forward patch to make tabs in listings always display as 8 spaces wide by converting tabs to spaces
lost@l-w.ca
parents: 0
diff changeset
45
0
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
46 if (!(as -> flags & FLAG_LIST))
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
47 return;
106
43a3f1068027 Adjustments for list code
lost@l-w.ca
parents: 81
diff changeset
48
0
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
49 if (as -> list_file)
106
43a3f1068027 Adjustments for list code
lost@l-w.ca
parents: 81
diff changeset
50 {
43a3f1068027 Adjustments for list code
lost@l-w.ca
parents: 81
diff changeset
51 if (strcmp(as -> list_file, "-") == 0)
43a3f1068027 Adjustments for list code
lost@l-w.ca
parents: 81
diff changeset
52 {
43a3f1068027 Adjustments for list code
lost@l-w.ca
parents: 81
diff changeset
53 of = stdout;
43a3f1068027 Adjustments for list code
lost@l-w.ca
parents: 81
diff changeset
54 }
43a3f1068027 Adjustments for list code
lost@l-w.ca
parents: 81
diff changeset
55 else
43a3f1068027 Adjustments for list code
lost@l-w.ca
parents: 81
diff changeset
56 of = fopen(as -> list_file, "w");
43a3f1068027 Adjustments for list code
lost@l-w.ca
parents: 81
diff changeset
57 }
0
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
58 else
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
59 of = stdout;
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
60 if (!of)
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
61 {
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
62 fprintf(stderr, "Cannot open list file; list not generated\n");
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
63 return;
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
64 }
106
43a3f1068027 Adjustments for list code
lost@l-w.ca
parents: 81
diff changeset
65
49
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
66 for (cl = as -> line_head; cl; cl = nl)
0
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
67 {
319
dc763f806dc4 Left truncate file names in list output.
William Astle <lost@l-w.ca>
parents: 273
diff changeset
68 char *linespec;
dc763f806dc4 Left truncate file names in list output.
William Astle <lost@l-w.ca>
parents: 273
diff changeset
69
49
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
70 nl = cl -> next;
81
428068681cbf Added nolist pragma to suppress listing output of non-code generating lines
Lost Wizard (lost@starbug3)
parents: 50
diff changeset
71 if (CURPRAGMA(cl, PRAGMA_NOLIST))
428068681cbf Added nolist pragma to suppress listing output of non-code generating lines
Lost Wizard (lost@starbug3)
parents: 50
diff changeset
72 {
428068681cbf Added nolist pragma to suppress listing output of non-code generating lines
Lost Wizard (lost@starbug3)
parents: 50
diff changeset
73 if (cl -> outputl <= 0)
428068681cbf Added nolist pragma to suppress listing output of non-code generating lines
Lost Wizard (lost@starbug3)
parents: 50
diff changeset
74 continue;
428068681cbf Added nolist pragma to suppress listing output of non-code generating lines
Lost Wizard (lost@starbug3)
parents: 50
diff changeset
75 }
49
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
76 if (cl -> noexpand_start)
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
77 {
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
78 obytelen = 0;
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
79 int nc = 0;
273
1409debcb1a0 Fix crash on listing when nested noexpand macros are used
William Astle <lost@l-w.ca>
parents: 230
diff changeset
80 for (nl = cl; nl; nl = nl -> next)
49
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
81 {
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
82 if (nl -> noexpand_start)
273
1409debcb1a0 Fix crash on listing when nested noexpand macros are used
William Astle <lost@l-w.ca>
parents: 230
diff changeset
83 nc += nl -> noexpand_start;
49
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
84 if (nl -> noexpand_end)
273
1409debcb1a0 Fix crash on listing when nested noexpand macros are used
William Astle <lost@l-w.ca>
parents: 230
diff changeset
85 nc -= nl -> noexpand_end;
49
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
86
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
87 if (nl -> outputl > 0)
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
88 obytelen += nl -> outputl;
227
721a5ea5e36a Make warnings show up in assembly listings.
William Astle <lost@l-w.ca>
parents: 194
diff changeset
89 if (nl -> warn)
721a5ea5e36a Make warnings show up in assembly listings.
William Astle <lost@l-w.ca>
parents: 194
diff changeset
90 {
721a5ea5e36a Make warnings show up in assembly listings.
William Astle <lost@l-w.ca>
parents: 194
diff changeset
91 lwasm_error_t *e;
721a5ea5e36a Make warnings show up in assembly listings.
William Astle <lost@l-w.ca>
parents: 194
diff changeset
92 for (e = nl -> warn; e; e = e -> next)
721a5ea5e36a Make warnings show up in assembly listings.
William Astle <lost@l-w.ca>
parents: 194
diff changeset
93 {
721a5ea5e36a Make warnings show up in assembly listings.
William Astle <lost@l-w.ca>
parents: 194
diff changeset
94 printf("Warning: %s\n", e -> mess);
721a5ea5e36a Make warnings show up in assembly listings.
William Astle <lost@l-w.ca>
parents: 194
diff changeset
95 }
721a5ea5e36a Make warnings show up in assembly listings.
William Astle <lost@l-w.ca>
parents: 194
diff changeset
96 }
49
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
97 if (nc == 0)
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
98 break;
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
99 }
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
100 obytes = lw_alloc(obytelen);
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
101 nc = 0;
50
f55650f5e9b8 Fixed problems with macro expansion supression
lost@l-w.ca
parents: 49
diff changeset
102 for (nl2 = cl; ; nl2 = nl2 -> next)
49
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
103 {
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
104 int i;
50
f55650f5e9b8 Fixed problems with macro expansion supression
lost@l-w.ca
parents: 49
diff changeset
105 for (i = 0; i < nl2 -> outputl; i++)
49
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
106 {
50
f55650f5e9b8 Fixed problems with macro expansion supression
lost@l-w.ca
parents: 49
diff changeset
107 obytes[nc++] = nl2 -> output[i];
49
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
108 }
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
109 if (nc >= obytelen)
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
110 break;
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
111 }
273
1409debcb1a0 Fix crash on listing when nested noexpand macros are used
William Astle <lost@l-w.ca>
parents: 230
diff changeset
112 if (nl)
1409debcb1a0 Fix crash on listing when nested noexpand macros are used
William Astle <lost@l-w.ca>
parents: 230
diff changeset
113 nl = nl -> next;
49
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
114 }
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
115 else
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
116 {
227
721a5ea5e36a Make warnings show up in assembly listings.
William Astle <lost@l-w.ca>
parents: 194
diff changeset
117 if (cl -> warn)
721a5ea5e36a Make warnings show up in assembly listings.
William Astle <lost@l-w.ca>
parents: 194
diff changeset
118 {
721a5ea5e36a Make warnings show up in assembly listings.
William Astle <lost@l-w.ca>
parents: 194
diff changeset
119 lwasm_error_t *e;
721a5ea5e36a Make warnings show up in assembly listings.
William Astle <lost@l-w.ca>
parents: 194
diff changeset
120 for (e = cl -> warn; e; e = e -> next)
721a5ea5e36a Make warnings show up in assembly listings.
William Astle <lost@l-w.ca>
parents: 194
diff changeset
121 {
721a5ea5e36a Make warnings show up in assembly listings.
William Astle <lost@l-w.ca>
parents: 194
diff changeset
122 printf("Warning: %s\n", e -> mess);
721a5ea5e36a Make warnings show up in assembly listings.
William Astle <lost@l-w.ca>
parents: 194
diff changeset
123 }
721a5ea5e36a Make warnings show up in assembly listings.
William Astle <lost@l-w.ca>
parents: 194
diff changeset
124 }
49
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
125 obytelen = cl -> outputl;
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
126 if (obytelen > 0)
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
127 {
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
128 obytes = lw_alloc(obytelen);
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
129 memmove(obytes, cl -> output, cl -> outputl);
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
130 }
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
131 }
357
b6933dc299e6 Make listings show the address for lines that only define symbols
William Astle <lost@l-w.ca>
parents: 319
diff changeset
132 if ((cl -> len < 1 && cl -> dlen < 1) && obytelen < 1 && (cl -> symset == 1 || cl -> sym == NULL) )
0
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
133 {
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
134 if (cl -> soff >= 0)
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
135 {
142
697bc543368c Implement distinction between . and * for OS9 modules
lost@l-w.ca
parents: 106
diff changeset
136 fprintf(of, "%04Xs ", cl -> soff & 0xffff);
0
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
137 }
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
138 else if (cl -> dshow >= 0)
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
139 {
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
140 if (cl -> dsize == 1)
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
141 {
42
31adb7c09b4e Cosmetic fixup in listings for SETDP
lost@l-w.ca
parents: 14
diff changeset
142 fprintf(of, " %02X ", cl -> dshow & 0xff);
0
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
143 }
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
144 else
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
145 {
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
146 fprintf(of, " %04X ", cl -> dshow & 0xff);
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
147 }
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
148 }
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
149 else if (cl -> dptr)
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
150 {
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
151 lw_expr_t te;
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
152 te = lw_expr_copy(cl -> dptr -> value);
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
153 as -> exportcheck = 1;
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
154 as -> csect = cl -> csect;
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
155 lwasm_reduce_expr(as, te);
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
156 as -> exportcheck = 0;
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
157 if (lw_expr_istype(te, lw_expr_type_int))
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
158 {
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
159 fprintf(of, " %04X ", lw_expr_intval(te) & 0xffff);
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
160 }
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
161 else
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
162 {
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
163 fprintf(of, " ???? ");
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
164 }
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
165 lw_expr_destroy(te);
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
166 }
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
167 else
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
168 {
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
169 fprintf(of, " ");
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
170 }
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
171 }
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
172 else
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
173 {
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
174 lw_expr_t te;
142
697bc543368c Implement distinction between . and * for OS9 modules
lost@l-w.ca
parents: 106
diff changeset
175 if (instab[cl -> insn].flags & lwasm_insn_setdata)
697bc543368c Implement distinction between . and * for OS9 modules
lost@l-w.ca
parents: 106
diff changeset
176 te = lw_expr_copy(cl -> daddr);
697bc543368c Implement distinction between . and * for OS9 modules
lost@l-w.ca
parents: 106
diff changeset
177 else
697bc543368c Implement distinction between . and * for OS9 modules
lost@l-w.ca
parents: 106
diff changeset
178 te = lw_expr_copy(cl -> addr);
0
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
179 as -> exportcheck = 1;
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
180 as -> csect = cl -> csect;
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
181 lwasm_reduce_expr(as, te);
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
182 as -> exportcheck = 0;
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
183 // fprintf(of, "%s\n", lw_expr_print(te));
142
697bc543368c Implement distinction between . and * for OS9 modules
lost@l-w.ca
parents: 106
diff changeset
184 fprintf(of, "%04X%c", lw_expr_intval(te) & 0xffff, ((cl -> inmod || (cl -> dlen != cl -> len)) && instab[cl -> insn].flags & lwasm_insn_setdata) ? '.' : ' ');
0
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
185 lw_expr_destroy(te);
49
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
186 for (i = 0; i < obytelen && i < 8; i++)
0
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
187 {
49
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
188 fprintf(of, "%02X", obytes[i]);
0
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
189 }
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
190 for (; i < 8; i++)
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
191 {
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
192 fprintf(of, " ");
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
193 }
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
194 fprintf(of, " ");
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
195 }
376
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
196
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
197 /* the format specifier below is deliberately chosen so that the start of the line text is at
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
198 a multiple of 8 from the start of the list line */
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
199
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
200 #define max_linespec_len 17
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
201
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
202 // trim "include:" if it appears
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
203 linespec = cl -> linespec;
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
204 if ((strlen(linespec) > 8) && (linespec[7] == ':')) linespec += 8;
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
205 while (*linespec == ' ') linespec++;
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
206
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
207 fprintf(of, "(%*.*s):%05d ", max_linespec_len, max_linespec_len, linespec, cl->lineno);
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
208
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
209 if (CURPRAGMA(cl, PRAGMA_CC))
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
210 {
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
211 as->cycle_total = 0;
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
212 }
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
213
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
214 /* display cycle counts */
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
215 char s[64] = "";
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
216 if (CURPRAGMA(cl, PRAGMA_C) || CURPRAGMA(cl, PRAGMA_CD))
319
dc763f806dc4 Left truncate file names in list output.
William Astle <lost@l-w.ca>
parents: 273
diff changeset
217 {
376
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
218 if (cl->cycle_base != 0)
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
219 {
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
220 char ch = '(';
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
221 if (CURPRAGMA(cl, PRAGMA_6809)) ch = '[';
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
222
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
223 if (CURPRAGMA(cl, PRAGMA_CD) && cl->cycle_flags & CYCLE_ADJ)
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
224 {
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
225 sprintf(s, "%c%d+%d", ch, cl->cycle_base, cl->cycle_adj); /* detailed cycle count */
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
226 }
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
227 else
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
228 {
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
229 sprintf(s, "%c%d", ch, cl->cycle_base + cl->cycle_adj); /* normal cycle count*/
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
230 }
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
231
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
232 if (cl->cycle_flags & CYCLE_ESTIMATED)
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
233 strcat(s, "+?");
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
234
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
235 as->cycle_total += cl->cycle_base + cl->cycle_adj;
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
236
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
237 ch = ')';
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
238 if (CURPRAGMA(cl, PRAGMA_6809)) ch = ']';
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
239 sprintf(s, "%s%c", s, ch);
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
240 }
319
dc763f806dc4 Left truncate file names in list output.
William Astle <lost@l-w.ca>
parents: 273
diff changeset
241 }
376
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
242
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
243 fprintf(of, "%-8s", s);
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
244
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
245 if (CURPRAGMA(cl, PRAGMA_CT))
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
246 {
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
247 if (cl->cycle_base != 0)
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
248 {
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
249 fprintf(of, "%-8d", as->cycle_total);
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
250 }
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
251 else
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
252 {
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
253 fprintf(of, " ");
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
254 }
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
255 }
35d4213e6657 Add cycle counting to listing
William Astle <lost@l-w.ca>
parents: 357
diff changeset
256
390
1ebb5a0b2874 Add option to specify tab width in listing
William Astle <lost@l-w.ca>
parents: 376
diff changeset
257 if (as -> tabwidth == 0)
14
5ecdc4dae84d Brought forward patch to make tabs in listings always display as 8 spaces wide by converting tabs to spaces
lost@l-w.ca
parents: 0
diff changeset
258 {
390
1ebb5a0b2874 Add option to specify tab width in listing
William Astle <lost@l-w.ca>
parents: 376
diff changeset
259 fputs(cl -> ltext, of);
1ebb5a0b2874 Add option to specify tab width in listing
William Astle <lost@l-w.ca>
parents: 376
diff changeset
260 }
1ebb5a0b2874 Add option to specify tab width in listing
William Astle <lost@l-w.ca>
parents: 376
diff changeset
261 else
1ebb5a0b2874 Add option to specify tab width in listing
William Astle <lost@l-w.ca>
parents: 376
diff changeset
262 {
1ebb5a0b2874 Add option to specify tab width in listing
William Astle <lost@l-w.ca>
parents: 376
diff changeset
263 i = 0;
1ebb5a0b2874 Add option to specify tab width in listing
William Astle <lost@l-w.ca>
parents: 376
diff changeset
264 for (tc = cl -> ltext; *tc; tc++)
14
5ecdc4dae84d Brought forward patch to make tabs in listings always display as 8 spaces wide by converting tabs to spaces
lost@l-w.ca
parents: 0
diff changeset
265 {
390
1ebb5a0b2874 Add option to specify tab width in listing
William Astle <lost@l-w.ca>
parents: 376
diff changeset
266 if ((*tc) == '\t')
14
5ecdc4dae84d Brought forward patch to make tabs in listings always display as 8 spaces wide by converting tabs to spaces
lost@l-w.ca
parents: 0
diff changeset
267 {
390
1ebb5a0b2874 Add option to specify tab width in listing
William Astle <lost@l-w.ca>
parents: 376
diff changeset
268 if (i % as -> tabwidth == 0)
1ebb5a0b2874 Add option to specify tab width in listing
William Astle <lost@l-w.ca>
parents: 376
diff changeset
269 {
1ebb5a0b2874 Add option to specify tab width in listing
William Astle <lost@l-w.ca>
parents: 376
diff changeset
270 fputc(' ', of);
1ebb5a0b2874 Add option to specify tab width in listing
William Astle <lost@l-w.ca>
parents: 376
diff changeset
271 i++;
1ebb5a0b2874 Add option to specify tab width in listing
William Astle <lost@l-w.ca>
parents: 376
diff changeset
272 }
1ebb5a0b2874 Add option to specify tab width in listing
William Astle <lost@l-w.ca>
parents: 376
diff changeset
273 while (i % as -> tabwidth)
14
5ecdc4dae84d Brought forward patch to make tabs in listings always display as 8 spaces wide by converting tabs to spaces
lost@l-w.ca
parents: 0
diff changeset
274 {
5ecdc4dae84d Brought forward patch to make tabs in listings always display as 8 spaces wide by converting tabs to spaces
lost@l-w.ca
parents: 0
diff changeset
275 fputc(' ', of);
5ecdc4dae84d Brought forward patch to make tabs in listings always display as 8 spaces wide by converting tabs to spaces
lost@l-w.ca
parents: 0
diff changeset
276 i++;
5ecdc4dae84d Brought forward patch to make tabs in listings always display as 8 spaces wide by converting tabs to spaces
lost@l-w.ca
parents: 0
diff changeset
277 }
5ecdc4dae84d Brought forward patch to make tabs in listings always display as 8 spaces wide by converting tabs to spaces
lost@l-w.ca
parents: 0
diff changeset
278 }
390
1ebb5a0b2874 Add option to specify tab width in listing
William Astle <lost@l-w.ca>
parents: 376
diff changeset
279 else
1ebb5a0b2874 Add option to specify tab width in listing
William Astle <lost@l-w.ca>
parents: 376
diff changeset
280 {
1ebb5a0b2874 Add option to specify tab width in listing
William Astle <lost@l-w.ca>
parents: 376
diff changeset
281 fputc(*tc, of);
1ebb5a0b2874 Add option to specify tab width in listing
William Astle <lost@l-w.ca>
parents: 376
diff changeset
282 i++;
1ebb5a0b2874 Add option to specify tab width in listing
William Astle <lost@l-w.ca>
parents: 376
diff changeset
283 }
14
5ecdc4dae84d Brought forward patch to make tabs in listings always display as 8 spaces wide by converting tabs to spaces
lost@l-w.ca
parents: 0
diff changeset
284 }
5ecdc4dae84d Brought forward patch to make tabs in listings always display as 8 spaces wide by converting tabs to spaces
lost@l-w.ca
parents: 0
diff changeset
285 }
5ecdc4dae84d Brought forward patch to make tabs in listings always display as 8 spaces wide by converting tabs to spaces
lost@l-w.ca
parents: 0
diff changeset
286 fputc('\n', of);
390
1ebb5a0b2874 Add option to specify tab width in listing
William Astle <lost@l-w.ca>
parents: 376
diff changeset
287
194
f8b33b3a45ac Fix noexpand macro listings to show all bytes output
William Astle <lost@l-w.ca>
parents: 142
diff changeset
288 if (obytelen > 8)
0
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
289 {
49
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
290 for (i = 8; i < obytelen; i++)
0
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
291 {
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
292 if (i % 8 == 0)
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
293 {
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
294 if (i != 8)
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
295 fprintf(of, "\n ");
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
296 else
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
297 fprintf(of, " ");
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
298 }
49
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
299 fprintf(of, "%02X", obytes[i]);
0
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
300 }
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
301 if (i > 8)
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
302 fprintf(of, "\n");
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
303 }
49
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
304 lw_free(obytes);
bd8b3fbd1e28 Added ability to flag macros as "noexpand" so they are not expanded in the listing
lost@l-w.ca
parents: 42
diff changeset
305 obytes = NULL;
0
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
306 }
230
e09985968e64 Don't suppress symbol listing in unicorns mode
William Astle <lost@l-w.ca>
parents: 227
diff changeset
307 if ((as -> flags & FLAG_SYMBOLS))
0
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
308 list_symbols(as, of);
2c24602be78f Initial import from lwtools 3.0.1 version, with new hand built build system and file reorganization
lost@l-w.ca
parents:
diff changeset
309 }