2 // RMAC - Reboot's Macro Assembler for all Atari computers
3 // SYMBOL.H - Symbol Handling
4 // Copyright (C) 199x Landon Dyer, 2011-2017 Reboot and Friends
5 // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986
6 // Source utilised with the kind permission of Landon Dyer
15 #define LLIST struct _llist
23 #define SYM struct _sym
26 SYM * snext; // * -> Next symbol on hash-chain
27 SYM * sorder; // * -> Next sym in order of reference
28 SYM * sdecl; // * -> Next sym in order of declaration
29 uint8_t stype; // Symbol type
30 uint16_t sattr; // Attribute bits
31 uint32_t sattre; // Extended attribute bits
32 uint16_t senv; // Enviroment number
33 uint32_t svalue; // Symbol value
34 uint8_t * sname; // * -> Symbol's print-name
35 LLIST * lineList; // * -> Macro's linked list of lines
36 LLIST * last; // * -> end of macro linked list
37 uint32_t uid; // Symbol's unique ID
42 extern uint32_t firstglobal;// Index of the fist global symbol in an ELF object.
45 SYM * lookup(uint8_t *, int, int);
46 void InitSymbolTable(void);
47 SYM * NewSymbol(uint8_t *, int, int);
48 void AddToSymbolDeclarationList(SYM *);
49 void ForceUndefinedSymbolsGlobal(void);
51 uint32_t sy_assign(uint8_t *, uint8_t *(*)());
52 uint32_t sy_assign_ELF(uint8_t *, uint8_t *(*)());
53 uint8_t * GetSymbolNameByUID(uint32_t);
55 #endif // __SYMBOL_H__