aboutsummaryrefslogtreecommitdiffstats
path: root/asmpars.h
blob: 2f944b08eaa6d164c7f05ee2578ad8de2bdda384 (plain)
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
/* asmpars.h */
/*****************************************************************************/
/* AS-Portierung                                                             */
/*                                                                           */
/* Verwaltung von Symbolen und das ganze Drumherum...                        */
/*                                                                           */
/* Historie:  5. 5.1996 Grundsteinlegung                                     */
/*           26. 6.1998 Codepages                                            */
/*           16. 8.1998 NoICE-Symbolausgabe                                  */
/*            6.12.1998 UInt14                                               */
/*           12. 7.1999 angefangen mit externen Symbolen                     */
/*                                                                           */
/*****************************************************************************/

typedef enum {UInt1    ,
              UInt2    ,
              UInt3    ,
              SInt4    ,UInt4    , Int4    ,
              SInt5    ,UInt5    , Int5    ,
              UInt6    ,
              SInt7    ,UInt7    ,
              SInt8    ,UInt8    , Int8    ,
              UInt9    ,
              UInt10   , Int10   ,
              UInt11   ,
              UInt12   , Int12   ,
              UInt13   ,
              UInt14   ,
              UInt15   ,
              SInt16   ,UInt16   , Int16   ,
              UInt18   ,
              SInt20   ,UInt20   , Int20   ,
              UInt22   ,
              SInt24   ,UInt24   , Int24   ,
              SInt32   ,UInt32   , Int32   ,
#ifdef HAS64
               Int64   ,
#endif
               IntTypeCnt} IntType;

typedef enum {Float32,Float64,Float80,FloatDec,FloatCo,FloatTypeCnt} FloatType;

extern LargeWord IntMasks[IntTypeCnt];
extern LargeInt IntMins[IntTypeCnt];
extern LargeInt IntMaxs[IntTypeCnt];

extern Boolean FirstPassUnknown;
extern Boolean SymbolQuestionable;
extern Boolean UsesForwards;
extern LongInt MomLocHandle;
extern LongInt LocHandleCnt;
extern Boolean BalanceTree;
extern LongInt MomLocHandle;


extern void AsmParsInit(void);


extern Boolean SingleBit(LargeInt Inp, LargeInt *Erg);


extern LargeInt ConstIntVal(char *Asc_O, IntType Typ, Boolean *Ok);

extern Double ConstFloatVal(char *Asc_O, FloatType Typ, Boolean *Ok);

extern void ConstStringVal(char *Asc, char *Erg, Boolean *OK);


extern Boolean RangeCheck(LargeInt Wert, IntType Typ);

extern Boolean FloatRangeCheck(Double Wert, FloatType Typ);


extern Boolean IdentifySection(char *Name, LongInt *Erg);


extern Boolean ExpandSymbol(char *Name);

extern void EnterIntSymbol(char *Name_O, LargeInt Wert, Byte Typ, Boolean MayChange);

extern void EnterExtSymbol(char *Name_O, LargeInt Wert, Byte Typ, Boolean MayChange);

extern void EnterFloatSymbol(char *Name_O, Double Wert, Boolean MayChange);

extern void EnterStringSymbol(char *Name_O, char *Wert, Boolean MayChange);

extern Boolean GetIntSymbol(char *Name, LargeInt *Wert);

extern Boolean GetFloatSymbol(char *Name, Double *Wert);

extern Boolean GetStringSymbol(char *Name, char *Wert);

extern void PrintSymbolList(void);

extern void PrintDebSymbols(FILE *f);

extern void PrintNoISymbols(FILE *f);

extern void PrintSymbolTree(void);

extern void ClearSymbolList(void);

extern void ResetSymbolDefines(void);

extern void PrintSymbolDepth(void);


extern void SetSymbolSize(char *Name, ShortInt Size);

extern ShortInt GetSymbolSize(char *Name);

extern Boolean IsSymbolFloat(char *Name);

extern Boolean IsSymbolString(char *Name);

extern Boolean IsSymbolDefined(char *Name);

extern Boolean IsSymbolUsed(char *Name);

extern Boolean IsSymbolChangeable(char *Name);

extern Integer GetSymbolType(char *Name);

extern void EvalExpression(char *Asc_O, TempResult *Erg);

extern LargeInt EvalIntExpression(char *Asc, IntType Typ, Boolean *OK);

extern Double EvalFloatExpression(char *Asc, FloatType Typ, Boolean *OK);

extern void EvalStringExpression(char *Asc, Boolean *OK, char *Result);


extern Boolean PushSymbol(char *SymName_O, char *StackName_O);

extern Boolean PopSymbol(char *SymName_O, char *StackName_O);

extern void ClearStacks(void);
 

extern void EnterFunction(char *FName, char *FDefinition, Byte NewCnt);

extern PFunction FindFunction(char *Name);

extern void PrintFunctionList(void);

extern void ClearFunctionList(void);


extern void AddDefSymbol(char *Name, TempResult *Value);

extern void RemoveDefSymbol(char *Name);

extern void CopyDefSymbols(void);


extern void PrintCrossList(void);

extern void ClearCrossList(void);


extern LongInt GetSectionHandle(char *SName_O, Boolean AddEmpt, LongInt Parent);

extern char *GetSectionName(LongInt Handle);

extern void SetMomSection(LongInt Handle);

extern void AddSectionUsage(LongInt Start, LongInt Length);

extern void PrintSectionList(void);

extern void PrintDebSections(FILE *f);

extern void ClearSectionList(void);


extern void SetFlag(Boolean *Flag, char *Name, Boolean Wert);


extern LongInt GetLocHandle(void);

extern void PushLocHandle(LongInt NewLoc);

extern void PopLocHandle(void);

extern void ClearLocStack(void);


extern void AddRegDef(char *Orig, char *Repl);

extern Boolean FindRegDef(char *Name, char **Erg);

extern void TossRegDefs(LongInt Sect);

extern void CleanupRegDefs(void);

extern void ClearRegDefs(void);

extern void PrintRegDefs(void);


extern void ClearCodepages(void);

extern void PrintCodepages(void);


extern void asmpars_init(void);