2e1908dee0e23a3126fe1d2c7a168fd2276751bf
[fw/sdcc] / as / mcs51 / i51pst.c
1 /* i85pst.c */
2
3 /*
4  * (C) Copyright 1989,1990
5  * All Rights Reserved
6  *
7  * Alan R. Baldwin
8  * 721 Berkeley St.
9  * Kent, Ohio  44240
10  *
11  * 28-Oct-97 Ported from 8085 to 8051 by John Hartman
12  * 30-Jan-98 JLH: add memory-space flags for .AREA
13  */
14
15 #include <stdio.h>
16 #include <setjmp.h>
17 #include "asm.h"
18 #include "i8051.h"
19
20 struct  mne     mne[] = {
21
22         /* machine */
23
24         /* system */
25
26         { NULL, "CON",          S_ATYP,         0,      A_CON},
27         { NULL, "OVR",          S_ATYP,         0,      A_OVR},
28         { NULL, "REL",          S_ATYP,         0,      A_REL},
29         { NULL, "ABS",          S_ATYP,         0,      A_ABS},
30         { NULL, "NOPAG",        S_ATYP,         0,      A_NOPAG},
31         { NULL, "PAG",          S_ATYP,         0,      A_PAG},
32
33         { NULL, "CODE",         S_ATYP,         0,      A_CODE},
34         { NULL, "DATA",         S_ATYP,         0,      A_DATA},
35         { NULL, "XDATA",        S_ATYP,         0,      A_XDATA},
36         { NULL, "BIT",          S_ATYP,         0,      A_BIT},
37
38         { NULL, ".byte",        S_BYTE,         0,      0},
39         { NULL, ".db",          S_BYTE,         0,      0},
40         { NULL, ".word",        S_WORD,         0,      0},
41         { NULL, ".dw",          S_WORD,         0,      0},
42         { NULL, ".ascii",       S_ASCII,        0,      0},
43         { NULL, ".asciz",       S_ASCIZ,        0,      0},
44         { NULL, ".blkb",        S_BLK,          0,      1},
45         { NULL, ".ds",          S_BLK,          0,      1},
46         { NULL, ".blkw",        S_BLK,          0,      2},
47         { NULL, ".page",        S_PAGE,         0,      0},
48         { NULL, ".title",       S_TITLE,        0,      0},
49         { NULL, ".sbttl",       S_SBTL,         0,      0},
50         { NULL, ".globl",       S_GLOBL,        0,      0},
51         { NULL, ".area",        S_DAREA,        0,      0},
52         { NULL, ".even",        S_EVEN,         0,      0},
53         { NULL, ".odd",         S_ODD,          0,      0},
54         { NULL, ".if",          S_IF,           0,      0},
55         { NULL, ".else",        S_ELSE,         0,      0},
56         { NULL, ".endif",       S_ENDIF,        0,      0},
57         { NULL, ".include",     S_INCL,         0,      0},
58         { NULL, ".radix",       S_RADIX,        0,      0},
59         { NULL, ".org",         S_ORG,          0,      0},
60         { NULL, ".module",      S_MODUL,        0,      0},
61         { NULL, ".ascis",       S_ASCIS,        0,      0},
62     { NULL, ".flat24",  S_FLAT24,       0,      0},
63     { NULL, ".optsdcc", S_OPTSDCC,      0,      0},
64
65         /* 8051 */
66
67         { NULL, "a",            S_A,            0,      A},
68         { NULL, "ab",           S_AB,           0,      0},
69         { NULL,   "dptr",         S_DPTR,         0,      DPTR},
70         { NULL,   "pc",           S_PC,           0,      PC},
71         { NULL, "r0",           S_REG,          0,      R0},
72         { NULL, "r1",           S_REG,          0,      R1},
73         { NULL,   "r2",           S_REG,          0,      R2},
74         { NULL,   "r3",           S_REG,          0,      R3},
75         { NULL,   "r4",           S_REG,          0,      R4},
76         { NULL,   "r5",           S_REG,          0,      R5},
77         { NULL,   "r6",           S_REG,          0,      R6},
78         { NULL,   "r7",           S_REG,          0,      R7},
79
80         { NULL, "nop",          S_INH,          0,      0x00},
81         { NULL, "ret",          S_INH,          0,      0x22},
82         { NULL, "reti",         S_INH,          0,      0x32},
83
84         { NULL, "ajmp",         S_JMP11,        0,      0x01},
85         { NULL, "acall",        S_JMP11,        0,      0x11},
86         { NULL, "ljmp",         S_JMP16,        0,      0x02},
87         { NULL, "lcall",        S_JMP16,        0,      0x12},
88
89         { NULL, "rr",           S_ACC,          0,      0x03},
90         { NULL, "rrc",          S_ACC,          0,      0x13},
91         { NULL, "rl",           S_ACC,          0,      0x23},
92         { NULL, "rlc",          S_ACC,          0,      0x33},
93         { NULL, "swap",         S_ACC,          0,      0xC4},
94         { NULL, "da",           S_ACC,          0,      0xD4},
95
96         { NULL, "inc",          S_TYP1,         0,      0x00},
97         { NULL, "dec",          S_TYP1,         0,      0x10},
98
99         { NULL, "add",          S_TYP2,         0,      0x20},
100         { NULL, "addc",         S_TYP2,         0,      0x30},
101         { NULL, "subb",         S_TYP2,         0,      0x90},
102
103         { NULL, "orl",          S_TYP3,         0,      0x40},
104         { NULL, "anl",          S_TYP3,         0,      0x50},
105         { NULL, "xrl",          S_TYP3,         0,      0x60},
106
107         { NULL, "xch",          S_TYP4,         0,      0xC0},
108
109         { NULL, "mov",          S_MOV,          0,      0x00},
110
111         { NULL, "jbc",          S_BITBR,        0,      0x10},
112         { NULL, "jb",           S_BITBR,        0,      0x20},
113         { NULL, "jnb",          S_BITBR,        0,      0x30},
114
115         { NULL,   "jc",           S_BR,           0,      0x40},
116         { NULL,   "jnc",          S_BR,           0,      0x50},
117         { NULL,   "jz",           S_BR,           0,      0x60},
118         { NULL,   "jnz",          S_BR,           0,      0x70},
119         { NULL,   "sjmp",         S_BR,           0,      0x80},
120
121         { NULL,   "cjne",         S_CJNE,         0,      0xB0},
122         { NULL,   "djnz",         S_DJNZ,         0,      0xD0},
123         { NULL,   "jmp",          S_JMP,          0,      0x73},
124         { NULL,   "movc",         S_MOVC,         0,      0x83},
125         { NULL,   "movx",         S_MOVX,         0,      0x00},
126         { NULL,   "div",          S_AB,           0,      0x84},
127         { NULL,   "mul",          S_AB,           0,      0xA4},
128         { NULL,   "clr",          S_ACBIT,        0,      0xC2},
129         { NULL,   "cpl",          S_ACBIT,        0,      0xB2},
130         { NULL,   "setb",         S_SETB,         0,      0xD2},
131         { NULL,   "push",         S_DIRECT,       0,      0xC0},
132         { NULL,   "pop",          S_DIRECT,       0,      0xD0},
133         { NULL,   "xchd",         S_XCHD,         S_END,  0xD6}
134 };
135
136 struct PreDef preDef[] = {
137    {"AC",     0x00D6},
138    {"ac",     0x00D6},
139    {"A",      0x00D6},
140    {"a",      0x00D6},
141    {"ACC",    0x00E0},
142    {"acc",    0x00E0},
143    {"ACC.0",  0x00E0},
144    {"ACC.1",  0x00E1},
145    {"ACC.2",  0x00E2},
146    {"ACC.3",  0x00E3},
147    {"ACC.4",  0x00E4},
148    {"ACC.5",  0x00E5},
149    {"ACC.6",  0x00E6},
150    {"ACC.7",  0x00E7},
151    {"acc.0",  0x00E0},
152    {"acc.1",  0x00E1},
153    {"acc.2",  0x00E2},
154    {"acc.3",  0x00E3},
155    {"acc.4",  0x00E4},
156    {"acc.5",  0x00E5},
157    {"acc.6",  0x00E6},
158    {"acc.7",  0x00E7},
159    {"B",      0x00F0},
160    {"B.0",    0x00F0},
161    {"B.1",    0x00F1},
162    {"B.2",    0x00F2},
163    {"B.3",    0x00F3},  
164    {"B.4",    0x00F4},  
165    {"B.5",    0x00F5},  
166    {"B.6",    0x00F6},  
167    {"B.7",    0x00F7},  
168    {"b",      0x00F0},
169    {"b.0",    0x00F0},
170    {"b.1",    0x00F1},
171    {"b.2",    0x00F2},
172    {"b.3",    0x00F3},  
173    {"b.4",    0x00F4},  
174    {"b.5",    0x00F5},  
175    {"b.6",    0x00F6},  
176    {"b.7",    0x00F7},  
177    {"CPRL2",  0x00C8},  
178    {"cprl2",  0x00C8},  
179    {"CT2",    0x00C9},  
180    {"ct2",    0x00C9},  
181    {"CY",     0x00D7},  
182    {"cy",     0x00D7},  
183    {"DPH",    0x0083},  
184    {"DPL",    0x0082},  
185    {"dph",    0x0083},  
186    {"dpl",    0x0082},  
187    {"EA",     0x00AF},  
188    {"ea",     0x00AF},  
189    {"ES",     0x00AC},  
190    {"es",     0x00AC},  
191    {"ET0",    0x00A9},  
192    {"et0",    0x00A9},  
193    {"ET1",    0x00AB},  
194    {"et1",    0x00AB},  
195    {"ET2",    0x00AD},  
196    {"et2",    0x00AD},  
197    {"EX0",    0x00A8},  
198    {"ex0",    0x00A8},  
199    {"EX1",    0x00AA},  
200    {"ex1",    0x00AA},  
201    {"EXEN2",  0x00CB},  
202    {"exen2",  0x00CB},  
203    {"EXF2",   0x00CE},  
204    {"exf2",   0x00CE},  
205    {"F0",     0x00D5},  
206    {"f0",     0x00D5},  
207    {"IE",     0x00A8},  
208    {"IE.0",   0x00A8},  
209    {"IE.1",   0x00A9},  
210    {"IE.2",   0x00AA},  
211    {"IE.3",   0x00AB},  
212    {"IE.4",   0x00AC},  
213    {"IE.5",   0x00AD},  
214    {"IE.7",   0x00AF},  
215    {"ie",     0x00A8},  
216    {"ie.0",   0x00A8},  
217    {"ie.1",   0x00A9},  
218    {"ie.2",   0x00AA},  
219    {"ie.3",   0x00AB},  
220    {"ie.4",   0x00AC},  
221    {"ie.5",   0x00AD},  
222    {"ie.7",   0x00AF},  
223    {"IE0",    0x0089},  
224    {"ie0",    0x0089},  
225    {"IE1",    0x008B},  
226    {"ie1",    0x008B},  
227    {"INT0",   0x00B2},  
228    {"int0",   0x00B2},  
229    {"INT1",   0x00B3},  
230    {"int1",   0x00B3},  
231    {"IP",     0x00B8},  
232    {"IP.0",   0x00B8},  
233    {"IP.1",   0x00B9},  
234    {"IP.2",   0x00BA},  
235    {"IP.3",   0x00BB},  
236    {"IP.4",   0x00BC},  
237    {"IP.5",   0x00BD},  
238    {"ip",     0x00B8},  
239    {"ip.0",   0x00B8},  
240    {"ip.1",   0x00B9},  
241    {"ip.2",   0x00BA},  
242    {"ip.3",   0x00BB},  
243    {"ip.4",   0x00BC},  
244    {"ip.5",   0x00BD},  
245    {"IT0",    0x0088},  
246    {"it0",    0x0088},  
247    {"IT1",    0x008A},  
248    {"it1",    0x008A},  
249    {"OV",     0x00D2},  
250    {"ov",     0x00D2},  
251    {"P",      0x00D0},  
252    {"p",      0x00D0},  
253    {"P0",     0x0080},  
254    {"P0.0",   0x0080},  
255    {"P0.1",   0x0081},  
256    {"P0.2",   0x0082},  
257    {"P0.3",   0x0083},  
258    {"P0.4",   0x0084}, 
259    {"P0.5",   0x0085}, 
260    {"P0.6",   0x0086}, 
261    {"P0.7",   0x0087}, 
262    {"p0",     0x0080},  
263    {"p0.0",   0x0080},  
264    {"p0.1",   0x0081},  
265    {"p0.2",   0x0082},  
266    {"p0.3",   0x0083},  
267    {"p0.4",   0x0084}, 
268    {"p0.5",   0x0085}, 
269    {"p0.6",   0x0086}, 
270    {"p0.7",   0x0087}, 
271    {"P1",     0x0090}, 
272    {"P1.0",   0x0090}, 
273    {"P1.1",   0x0091}, 
274    {"P1.2",   0x0092}, 
275    {"P1.3",   0x0093}, 
276    {"P1.4",   0x0094}, 
277    {"P1.5",   0x0095}, 
278    {"P1.6",   0x0096}, 
279    {"P1.7",   0x0097}, 
280    {"p1",     0x0090}, 
281    {"p1.0",   0x0090}, 
282    {"p1.1",   0x0091}, 
283    {"p1.2",   0x0092}, 
284    {"p1.3",   0x0093}, 
285    {"p1.4",   0x0094}, 
286    {"p1.5",   0x0095}, 
287    {"p1.6",   0x0096}, 
288    {"p1.7",   0x0097}, 
289    {"P2",     0x00A0}, 
290    {"P2.0",   0x00A0}, 
291    {"P2.1",   0x00A1}, 
292    {"P2.2",   0x00A2},
293    {"P2.3",   0x00A3},
294    {"P2.4",   0x00A4},
295    {"P2.5",   0x00A5},
296    {"P2.6",   0x00A6}, 
297    {"P2.7",   0x00A7},
298    {"p2",     0x00A0}, 
299    {"p2.0",   0x00A0}, 
300    {"p2.1",   0x00A1}, 
301    {"p2.2",   0x00A2},
302    {"p2.3",   0x00A3},
303    {"p2.4",   0x00A4},
304    {"p2.5",   0x00A5},
305    {"p2.6",   0x00A6}, 
306    {"p2.7",   0x00A7},
307    {"P3",     0x00B0},
308    {"P3.0",   0x00B0},
309    {"P3.1",   0x00B1},
310    {"P3.2",   0x00B2},
311    {"P3.3",   0x00B3},
312    {"P3.4",   0x00B4},
313    {"P3.5",   0x00B5},
314    {"P3.6",   0x00B6},
315    {"P3.7",   0x00B7},
316    {"p3",     0x00B0},
317    {"p3.0",   0x00B0},
318    {"p3.1",   0x00B1},
319    {"p3.2",   0x00B2},
320    {"p3.3",   0x00B3},
321    {"p3.4",   0x00B4},
322    {"p3.5",   0x00B5},
323    {"p3.6",   0x00B6},
324    {"p3.7",   0x00B7},
325    {"PCON",   0x0087},
326    {"pcon",   0x0087},
327    {"PS",     0x00BC},
328    {"ps",     0x00BC},
329    {"PSW",    0x00D0},
330    {"PSW.0",  0x00D0},
331    {"PSW.1",  0x00D1},
332    {"PSW.2",  0x00D2},
333    {"PSW.3",  0x00D3},
334    {"PSW.4",  0x00D4},
335    {"PSW.5",  0x00D5},
336    {"PSW.6",  0x00D6},
337    {"PSW.7",  0x00D7},
338    {"psw",    0x00D0},
339    {"psw.0",  0x00D0},
340    {"psw.1",  0x00D1},
341    {"psw.2",  0x00D2},
342    {"psw.3",  0x00D3},
343    {"psw.4",  0x00D4},
344    {"psw.5",  0x00D5},
345    {"psw.6",  0x00D6},
346    {"psw.7",  0x00D7},
347    {"PT0",    0x00B9},
348    {"pt0",    0x00B9},
349    {"PT1",    0x00BB},
350    {"pt1",    0x00BB},
351    {"PT2",    0x00BD},
352    {"pt2",    0x00BD},
353    {"PX0",    0x00B8},
354    {"px0",    0x00B8},
355    {"PX1",    0x00BA},
356    {"px1",    0x00BA},
357    {"RB8",    0x009A},
358    {"rb8",    0x009A},
359    {"RCAP2H", 0x00CB},
360    {"rcap2h", 0x00CB},
361    {"RCAP2L", 0x00CA},
362    {"rcap2l", 0x00CA},
363    {"RCLK",   0x00CD},
364    {"rclk",   0x00CD},
365    {"REN",    0x009C},
366    {"ren",    0x009C},
367    {"RI",     0x0098},
368    {"ri",     0x0098},
369    {"RS0",    0x00D3},
370    {"rs0",    0x00D3},
371    {"RS1",    0x00D4},
372    {"rs1",    0x00D4},
373    {"rxd",    0x00B0},
374    {"RXD",    0x00B0},
375    {"SBUF",   0x0099},
376    {"sbuf",   0x0099},
377    {"SCON",   0x0098},
378    {"SCON.0", 0x0098},
379    {"SCON.1", 0x0099},
380    {"SCON.2", 0x009A},
381    {"SCON.3", 0x009B},
382    {"SCON.4", 0x009C},
383    {"SCON.5", 0x009D},
384    {"SCON.6", 0x009E},
385    {"SCON.7", 0x009F},
386    {"scon",   0x0098},
387    {"scon.0", 0x0098},
388    {"scon.1", 0x0099},
389    {"scon.2", 0x009A},
390    {"scon.3", 0x009B},
391    {"scon.4", 0x009C},
392    {"scon.5", 0x009D},
393    {"scon.6", 0x009E},
394    {"scon.7", 0x009F},
395    {"SM0",    0x009F},
396    {"sm0",    0x009F},
397    {"SM1",    0x009E},
398    {"sm1",    0x009E},
399    {"SM2",    0x009D},
400    {"sm2",    0x009D},
401    {"SP",     0x0081},
402    {"sp",     0x0081},
403    {"T2CON",  0x00C8},
404    {"T2CON.0",0x00C8},
405    {"T2CON.1",0x00C9},
406    {"T2CON.2",0x00CA},
407    {"T2CON.3",0x00CB},
408    {"T2CON.4",0x00CC},
409    {"T2CON.5",0x00CD},
410    {"T2CON.6",0x00CE},
411    {"T2CON.7",0x00CF},
412    {"t2con",  0x00C8},
413    {"t2con.0",0x00C8},
414    {"t2con.1",0x00C9},
415    {"t2con.2",0x00CA},
416    {"t2con.3",0x00CB},
417    {"t2con.4",0x00CC},
418    {"t2con.5",0x00CD},
419    {"t2con.6",0x00CE},
420    {"t2con.7",0x00CF},
421    {"TB8",    0x009B},
422    {"tb8",    0x009B},
423    {"TCLK",   0x00CC},
424    {"tclk",   0x00CC},
425    {"TCON",   0x0088},
426    {"TCON.0", 0x0088},
427    {"TCON.1", 0x0089},
428    {"TCON.2", 0x008A},
429    {"TCON.3", 0x008B},
430    {"TCON.4", 0x008C},
431    {"TCON.5", 0x008D},
432    {"TCON.6", 0x008E},
433    {"TCON.7", 0x008F},
434    {"tcon",   0x0088},
435    {"tcon.0", 0x0088},
436    {"tcon.1", 0x0089},
437    {"tcon.2", 0x008A},
438    {"tcon.3", 0x008B},
439    {"tcon.4", 0x008C},
440    {"tcon.5", 0x008D},
441    {"tcon.6", 0x008E},
442    {"tcon.7", 0x008F},
443    {"TF0",    0x008D},
444    {"tf0",    0x008D},
445    {"TF1",    0x008F},
446    {"tf1",    0x008F},
447    {"TF2",    0x00CF},
448    {"tf2",    0x00CF},
449    {"TH0",    0x008C},
450    {"th0",    0x008C},
451    {"TH1",    0x008D},
452    {"th1",    0x008D},
453    {"TH2",    0x00CD},
454    {"th2",    0x00CD},
455    {"TI",     0x0099},
456    {"ti",     0x0099},
457    {"TL0",    0x008A},
458    {"tl0",    0x008A},
459    {"TL1",    0x008B},
460    {"tl1",    0x008B},
461    {"TL2",    0x00CC},
462    {"tl2",    0x00CC},
463    {"TMOD",   0x0089},
464    {"tmod",   0x0089},
465    {"TR0",    0x008C},
466    {"tr0",    0x008C},
467    {"TR1",    0x008E},
468    {"tr1",    0x008E},
469    {"TR2",    0x00CA},
470    {"tr2",    0x00CA},
471    {"TXD",    0x00B1},
472    {"txd",    0x00B1},
473    {"",       0x0000},
474 };