1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
/* asmmac.h */
/*****************************************************************************/
/* AS-Portierung */
/* */
/* Unterroutinen des Makroprozessors */
/* */
/* Historie: 16. 5.1996 Grundsteinlegung */
/* */
/*****************************************************************************/
typedef struct _MacroRec
{
char *Name; /* Name des Makros */
Byte ParamCount; /* Anzahl Parameter */
StringList FirstLine; /* Zeiger auf erste Zeile */
Boolean Used; /* wird gerade benutzt-verhindert Rekusion */
Boolean LocMacExp; /* Makroexpansion wird aufgelistet */
} MacroRec,*PMacroRec;
#define BufferArraySize 1024
typedef struct _TInputTag
{
struct _TInputTag *Next;
Boolean IsMacro;
Integer IfLevel;
Boolean First;
Boolean OrigDoLst;
LongInt StartLine;
Boolean (*Processor)(
#ifdef __PROTOS__
struct _TInputTag *P, char *erg
#endif
);
LongInt ParCnt,ParZ;
StringList Params;
LongInt LineCnt,LineZ;
StringRecPtr Lines;
String SpecName,SaveAttr;
Boolean IsEmpty;
FILE *Datei;
void *Buffer;
void (*Cleanup)(
#ifdef __PROTOS__
struct _TInputTag *P
#endif
);
void (*Restorer)(
#ifdef __PROTOS__
struct _TInputTag *P
#endif
);
Boolean (*GetPos)(
#ifdef __PROTOS__
struct _TInputTag *P, char *Dest
#endif
);
} TInputTag,*PInputTag;
typedef struct _TOutputTag
{
struct _TOutputTag *Next;
void (*Processor)(
#ifdef __PROTOS__
void
#endif
);
Integer NestLevel;
PInputTag Tag;
PMacroRec Mac;
StringList Params;
LongInt PubSect,GlobSect;
Boolean DoExport,DoGlobCopy;
String GName;
} TOutputTag,*POutputTag;
extern PInputTag FirstInputTag;
extern POutputTag FirstOutputTag;
extern void Preprocess(void);
extern void AddMacro(PMacroRec Neu, LongInt DefSect, Boolean Protest);
extern Boolean FoundMacro(PMacroRec *Erg);
extern void ClearMacroList(void);
extern void ResetMacroDefines(void);
extern void ClearMacroRec(PMacroRec *Alt);
extern void PrintMacroList(void);
extern void PrintDefineList(void);
extern void ClearDefineList(void);
extern void ExpandDefines(char *Line);
extern void asmmac_init(void);
|