2 Definitions for what a port must provide.
3 All ports are referenced in SDCCmain.c.
8 /* Processor specific names */
10 /** Target name used for -m */
13 /** Target name string, used for --help */
14 const char *target_name;
16 /* assembler related information */
18 /** Command to run and arguments (eg as-z80) */
20 /** Arguments for debug mode. PENDING: ignored */
21 const char *debug_opts;
22 /** Arguments for normal assembly mode. PENDING: ignored */
23 const char *plain_opts;
26 /* linker related info */
28 /** Command to run (eg link-z80) */
33 /** Default peephole rules */
37 /** Basic type sizes */
51 /** Names for all the memory regions */
53 const char *xstack_name;
54 const char *istack_name;
55 const char *code_name;
56 const char *data_name;
57 const char *idata_name;
58 const char *xdata_name;
61 const char *static_name;
62 const char *overlay_name;
65 /* stack related information */
67 /** -1 for grows down (z80), +1 for grows up (mcs51) */
69 /** Extra overhead when calling between banks */
71 /** Extra overhead when the function is an ISR */
73 /** Standard overhead for a function call */
75 /** Re-enterant space */
80 /** One more than the smallest
81 mul/div operation the processor can do nativley
82 Eg if the processor has an 8 bit mul, nativebelow is 2 */
86 /** Called once the processor target has been selected.
87 First chance to initalise and set any port specific varibles.
88 'port' is set before calling this. May be NULL.
91 /** Parses one option + its arguments */
92 bool (*parseOption)(int *pargc, char **argv, int *i);
93 /** Called after all the options have been parsed. */
94 void (*finaliseOptions)(void);
95 /** Called after the port has been selected but before any
96 options are parsed. */
97 void (*setDefaultOptions)(void);
98 /** Does the dirty work. */
99 void (*assignRegisters)(eBBlock **, int);
101 /** Returns the register name of a symbol.
102 Used so that 'regs' can be an incomplete type. */
103 const char *(*getRegName)(struct regs *reg);
105 /* list of keywords that are used by this
106 target (used by lexer) */
109 /* Write any port specific assembler output. */
110 void (*genAssemblerPreamble)(FILE *of);
112 /* Write the port specific IVT. If genIVT is NULL or if
113 * it returns zero, default (8051) IVT generation code
116 int (*genIVT)(FILE *of, symbol **intTable, int intCount);