Subversion Repositories pentevo

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1186 savelij 1
#ifndef _ASMDEF_H
2
#define _ASMDEF_H
3
/* asmdef.h */
4
/*****************************************************************************/
5
/* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only                     */
6
/*                                                                           */
7
/* AS-Portierung                                                             */
8
/*                                                                           */
9
/* global benutzte Variablen und Definitionen                                */
10
/*                                                                           */
11
/*****************************************************************************/
12
 
13
#include <stddef.h>
14
#include <stdio.h>
15
 
16
#include "chunks.h"
17
#include "fileformat.h"
18
#include "dynstr.h"
19
#include "intformat.h"
20
#include "strcomp.h"
21
#include "striter.h"
22
#include "lstmacroexp.h"
23
#include "cpulist.h"
24
#include "tempresult.h"
25
#include "addrspace.h"
26
#include "chartrans.h"
27
 
28
typedef struct _TCrossRef
29
{
30
  struct _TCrossRef *Next;
31
  Byte FileNum;
32
  LongInt LineNum;
33
  Integer OccNum;
34
} TCrossRef,*PCrossRef;
35
 
36
 
37
typedef struct _TPatchEntry
38
{
39
  struct _TPatchEntry *Next;
40
  LargeWord Address;
41
  char *Ref;
42
  Word len;
43
  LongWord RelocType;
44
} TPatchEntry, *PPatchEntry;
45
 
46
typedef struct _TExportEntry
47
{
48
  struct _TExportEntry *Next;
49
  char *Name;
50
  Word len;
51
  LongWord Flags;
52
  LargeWord Value;
53
} TExportEntry, *PExportEntry;
54
 
55
typedef enum
56
{
57
  DebugNone,
58
  DebugMAP,
59
  DebugAOUT,
60
  DebugCOFF,
61
  DebugELF,
62
  DebugAtmel,
63
  DebugNoICE
64
} DebugType;
65
 
66
#define Char_NUL 0
67
#define Char_BEL '\a'
68
#define Char_BS '\b'
69
#define Char_HT 9
70
#define Char_LF '\n'
71
#define Char_FF 12
72
#define Char_CR 13
73
#define Char_ESC 27
74
 
75
#define ListMask_FormFeed         (1 << 0)
76
#define ListMask_SymbolList       (1 << 1)
77
#define ListMask_MacroList        (1 << 2)
78
#define ListMask_FunctionList     (1 << 3)
79
#define ListMask_LineNums         (1 << 4)
80
#define ListMask_DefineList       (1 << 5)
81
#define ListMask_RegDefList       (1 << 6)
82
#define ListMask_Codepages        (1 << 7)
83
#define ListMask_StructList       (1 << 8)
84
 
85
extern char SrcSuffix[],IncSuffix[],PrgSuffix[],LstSuffix[],
86
            MacSuffix[],PreSuffix[],LogSuffix[],MapSuffix[],
87
            OBJSuffix[];
88
 
89
#define MomCPUName       "MOMCPU"     /* mom. Prozessortyp */
90
#define MomCPUIdentName  "MOMCPUNAME" /* mom. Prozessortyp */
91
#define MomFPUIdentName  "MOMFPUNAME" /* mom. Koprozessortyp */
92
#define MomPMMUIdentName  "MOMPMMUNAME" /* mom. MMU-Typ */
93
#define DoPaddingName    "PADDING"    /* Padding an */
94
#define PackingName      "PACKING"    /* gepackte Ablage an */
95
#define ListOnName       "LISTON"     /* Listing an/aus */
96
#define RelaxedName      "RELAXED"    /* alle Zahlenschreibweisen zugelassen */
97
#define BranchExtName    "BRANCHEXT"  /* Spruenge autom. verlaengern */
98
#define FlagTrueName     "TRUE"       /* Flagkonstanten */
99
#define FlagFalseName    "FALSE"
100
#define PiName           "CONSTPI"    /* Zahl Pi */
101
#define FloatMaxName     "FLOATMAX"   /* largest floating point number */
102
#define DateName         "DATE"       /* Datum & Zeit */
103
#define TimeName         "TIME"
104
#define VerName          "VERSION"    /* speichert Versionsnummer */
105
#define CaseSensName     "CASESENSITIVE" /* zeigt Gross/Kleinunterscheidung an */
106
#define Has64Name        "HAS64"         /* arbeitet Parser mit 64-Bit-Integers ? */
107
#define ArchName         "ARCHITECTURE"  /* Zielarchitektur von AS */
108
#define AttrName         "ATTRIBUTE"  /* Attributansprache in Makros */
109
#define LabelName        "__LABEL__"  /* Labelansprache in Makros */
110
#define ArgCName         "ARGCOUNT"   /* Argumentzahlansprache in Makros */
111
#define AllArgName       "ALLARGS"    /* Ansprache Argumentliste in Makros */
112
#define DefStackName     "DEFSTACK"   /* Default-Stack */
113
#define NestMaxName      "NESTMAX"    /* max. nesting level of a macro */
114
#define DottedStructsName "DOTTEDSTRUCTS" /* struct elements by default with . */
115
 
116
extern const char *EnvName;
117
 
118
/* This results from the tokenized representation of macro arguments
119
   in macro bodys: (31*16) - 4 for special arguments: */
120
 
121
#define ArgCntMax 476
122
 
123
#define ChapMax 4
124
 
125
#define AscOfs '0'
126
 
127
#define MaxCodeLen_Ini 256
128
#define MaxCodeLen_Max 65535
129
extern LongWord MaxCodeLen;
130
 
131
#define DEF_NESTMAX 256
132
 
133
#define LOCSYMSIGHT 3       /* max. sight for nameless temporary symbols */
134
 
135
typedef void (*SimpProc)(
136
#ifdef __PROTOS__
137
void
138
#endif
139
);
140
 
141
typedef void (*DissectBitProc)(
142
#ifdef __PROTOS__
143
char *pDest, size_t DestSize, LargeWord Inp
144
#endif
145
);
146
 
147
typedef Word WordField[6];          /* fuer Zahlenumwandlung */
148
typedef struct _TTransTable
149
{
150
  struct _TTransTable *Next;
151
  char *Name;
152
  as_chartrans_table_t *p_table;
153
} TTransTable, *PTransTable;
154
 
155
typedef struct _TSaveState
156
{
157
  struct _TSaveState *Next;
158
  CPUVar SaveCPU;
159
  char *pSaveCPUArgs;
160
  as_addrspace_t SavePC;
161
  Byte SaveListOn;
162
  tLstMacroExp SaveLstMacroExp;
163
  tLstMacroExpMod SaveLstMacroExpModDefault,
164
                  SaveLstMacroExpModOverride;
165
  PTransTable SaveTransTable;
166
  Integer SaveEnumSegment;
167
  LongInt SaveEnumCurrentValue, SaveEnumIncrement;
168
} TSaveState,*PSaveState;
169
 
170
typedef struct _TForwardSymbol
171
{
172
  struct _TForwardSymbol *Next;
173
  StringPtr Name;
174
  LongInt DestSection;
175
  StringPtr pErrorPos;
176
} TForwardSymbol, *PForwardSymbol;
177
 
178
typedef struct _TSaveSection
179
{
180
  struct _TSaveSection *Next;
181
  PForwardSymbol LocSyms, GlobSyms, ExportSyms;
182
  LongInt Handle;
183
} TSaveSection, *PSaveSection;
184
 
185
typedef struct sSavePhase
186
{
187
  struct sSavePhase *pNext;
188
  LargeWord SaveValue;
189
} tSavePhase;
190
 
191
typedef struct _TDefinement
192
{
193
  struct _TDefinement *Next;
194
  StringPtr TransFrom, TransTo;
195
  Byte Compiled[256];
196
} TDefinement, *PDefinement;
197
 
198
typedef struct _ASSUMERec
199
{
200
  const char *Name;
201
  LongInt *Dest;
202
  LongInt Min,Max;
203
  LongInt NothingVal;
204
  void (*pPostProc)(void);
205
} ASSUMERec;
206
 
207
extern StringPtr SourceFile;
208
 
209
extern StringPtr CursUp;
210
 
211
extern LargeWord *PCs;
212
extern Boolean RelSegs;
213
extern LargeWord StartAdr;
214
extern LargeWord AfterBSRAddr;
215
extern Boolean StartAdrPresent;
216
extern LargeWord *Phases;
217
extern Word Grans[SegCountPlusStruct];
218
extern Word ListGrans[SegCountPlusStruct];
219
extern ChunkList SegChunks[SegCountPlusStruct];
220
extern as_addrspace_t ActPC;
221
extern Boolean PCsUsed[SegCountPlusStruct];
222
extern LargeWord *SegInits;
223
extern LargeWord *SegLimits;
224
extern LongInt ValidSegs;
225
extern Boolean ENDOccured;
226
extern Boolean Retracted;
227
extern Boolean ListToStdout,ListToNull;
228
 
229
extern unsigned ASSUMERecCnt;
230
extern const ASSUMERec *pASSUMERecs;
231
extern void (*pASSUMEOverride)(void);
232
 
233
extern Integer PassNo;
234
extern Integer JmpErrors;
235
extern Boolean ThrowErrors;
236
extern Boolean Repass;
237
extern Byte MaxSymPass;
238
extern Byte ShareMode;
239
extern DebugType DebugMode;
240
extern Word NoICEMask;
241
extern Byte ListMode;
242
extern Byte ListOn;
243
extern Integer MaxIncludeLevel;
244
extern Boolean MakeUseList;
245
extern Boolean MakeCrossList;
246
extern Boolean MakeSectionList;
247
extern Boolean MakeIncludeList;
248
extern Boolean DefRelaxedMode;
249
extern as_dynstr_t def_int_syntax;
250
extern Word ListMask;
251
extern Boolean list_macro_handles;
252
extern ShortInt ExtendErrors;
253
extern Integer EnumSegment;
254
extern LongInt EnumIncrement, EnumCurrentValue;
255
extern LongWord MaxErrors;
256
 
257
extern LongInt MomSectionHandle;
258
extern PSaveSection SectionStack;
259
extern tSavePhase *pPhaseStacks[SegCount];
260
 
261
extern tSymbolSize AttrPartOpSize[2];
262
extern LongInt CodeLen;
263
extern Byte *BAsmCode;
264
extern Word *WAsmCode;
265
extern LongWord *DAsmCode;
266
 
267
extern Boolean DontPrint;
268
extern Word ActListGran;
269
 
270
extern Boolean NumericErrors;
271
extern Boolean CodeOutput;
272
extern Boolean MacProOutput;
273
extern Boolean MacroOutput;
274
extern Boolean HardRanges;
275
extern const char *DivideChars;
276
extern Boolean HasAttrs;
277
extern const char *AttrChars;
278
extern Boolean MsgIfRepass;
279
extern Integer PassNoForMessage;
280
extern Boolean CaseSensitive;
281
extern LongInt NestMax;
282
extern Boolean GNUErrors;
283
 
284
extern FILE *PrgFile;
285
 
286
extern StringPtr ErrorPath,ErrorName;
287
extern StringPtr OutName;
288
extern Integer CurrIncludeLevel;
289
extern StringPtr CurrFileName;
290
extern LongInt CurrLine;
291
extern LongInt LineSum;
292
extern LongInt MacLineSum;
293
 
294
extern LongInt NOPCode;
295
extern Boolean TurnWords;
296
extern Byte HeaderID;
297
extern const char *PCSymbol;
298
extern tIntConstMode IntConstMode;
299
extern Boolean IntConstModeIBMNoTerm;
300
extern Boolean (*SetIsOccupiedFnc)(void),
301
               (*SaveIsOccupiedFnc)(void),
302
               (*RestoreIsOccupiedFnc)(void);
303
extern Boolean SwitchIsOccupied, PageIsOccupied, ShiftIsOccupied;
304
extern Boolean multi_char_le;
305
extern Boolean (*DecodeAttrPart)(void);
306
extern void (*MakeCode)(void);
307
extern Boolean (*ChkPC)(LargeWord Addr);
308
extern Boolean (*IsDef)(void);
309
extern void (*SwitchFrom)(void);
310
extern void (*InternSymbol)(char *Asc, TempResult *Erg);
311
extern DissectBitProc DissectBit;
312
extern DissectRegProc DissectReg;
313
extern as_qualify_quote_fnc_t QualifyQuote;
314
 
315
extern StringPtr IncludeList;
316
extern Integer IncDepth, NextIncDepth, MaxIncDepth;
317
extern FILE *ErrorFile;
318
extern FILE *LstFile;
319
extern FILE *ShareFile;
320
extern FILE *MacProFile;
321
extern FILE *MacroFile;
322
extern Boolean InMacroFlag;
323
extern StringPtr LstName, MacroName, MacProName;
324
extern tLstMacroExp DoLst, NextDoLst;
325
extern StringPtr ShareName;
326
extern CPUVar MomCPU, MomVirtCPU;
327
extern StringPtr MomCPUArgs;
328
extern char DefCPU[20];
329
extern char MomCPUIdent[20],
330
            MomFPUIdent[20],
331
            MomPMMUIdent[20];
332
 
333
extern int OutRadixBase, ListRadixBase;
334
extern Boolean ListPCZeroPad;
335
extern const char *pCommentLeadIn;
336
 
337
extern tStrComp *ArgStr;
338
extern tStrComp LabPart, CommPart, ArgPart, OpPart, AttrPart;
339
extern char AttrSplit;
340
extern Boolean oppart_leading_dot;
341
extern int ArgCnt;
342
extern as_dynstr_t OneLine;
343
#ifdef PROFILE_MEMO
344
extern unsigned NumMemo;
345
extern unsigned long NumMemoSum, NumMemoCnt;
346
#endif
347
 
348
#define forallargs(pArg, cond) \
349
        for (pArg = ArgStr + 1; (cond) && (pArg <= ArgStr + ArgCnt); pArg++)
350
 
351
extern Byte LstCounter;
352
extern Word PageCounter[ChapMax+1];
353
extern Byte ChapDepth;
354
extern StringPtr ListLine;
355
extern Byte PageLength, PageWidth;
356
extern tLstMacroExpMod LstMacroExpModOverride, LstMacroExpModDefault;
357
extern Boolean DottedStructs;
358
extern StringPtr PrtInitString;
359
extern StringPtr PrtExitString;
360
extern StringPtr PrtTitleString;
361
 
362
extern Byte StopfZahl;
363
 
364
extern Boolean SuppWarns;
365
 
366
extern PTransTable TransTables, CurrTransTable;
367
 
368
extern PDefinement FirstDefine;
369
 
370
extern PSaveState FirstSaveState;
371
 
372
extern Boolean MakeDebug;
373
extern FILE *Debug;
374
 
375
extern Boolean WasIF, WasMACRO;
376
 
377
extern void AsmDefInit(void);
378
 
379
extern void NullProc(void);
380
 
381
extern int SetMaxCodeLen(LongWord NewMaxCodeLen);
382
 
383
extern void Default_InternSymbol(char *Asc, TempResult *Erg);
384
 
385
extern void Default_DissectBit(char *pDest, size_t DestSize, LargeWord BitSpec);
386
 
387
extern void AppendArg(size_t ReqSize);
388
extern void InsertArg(int Index, size_t ReqSize);
389
 
390
extern Boolean memo_set_pseudo(void);
391
extern Boolean is_set_pseudo(void);
392
extern Boolean is_save_pseudo(void);
393
extern Boolean is_restore_pseudo(void);
394
extern Boolean memo_switch_pseudo(void);
395
extern Boolean memo_shift_pseudo(void);
396
extern Boolean is_page_pseudo(void);
397
 
398
extern void free_forward_symbol(PForwardSymbol p_symbol);
399
 
400
extern void asmdef_init(void);
401
#endif /* _ASMDEF_H */