208 lines
5.4 KiB
C
208 lines
5.4 KiB
C
/* 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);
|
|
|