Files
lt16lab/assembler/inc/global.h
Thomas Fehmel 657a54ba18 Initial Commit
2016-10-18 14:21:45 +02:00

86 lines
1.8 KiB
C

/*
* This file
* - defines globally used constants
* - defines enum types
* - declares globally used variables
*/
#ifndef GLOBAL_H_
#define GLOBAL_H_
#include <stdio.h>
// maximal filename length
#define MAX_FILENAME_LENGTH (128);
// nop instruction for 16bit
#define nop16 (0b0000000000000000)
// number of link register
#define lr_num (13)
// all supported modes
typedef enum {
mode_eq, mode_neq, mode_ge, mode_gg, mode_le, mode_ll,
mode_cond_true, mode_cond_unconditional
} opmode_t;
// all supported (pseudo) instructions and directives
typedef enum {
op_add, op_sub, op_and, op_or, op_xor, op_lsh, op_rsh, op_addi,
op_cmp, op_ssr,
op_ldr, op_ld08, op_ld16, op_ld32, op_st08, op_st16, op_st32,
op_brt, op_br, op_call, op_trap, op_reti,
op_tst,
op_mov, op_nop, op_ret, op_clr,
op_word, // used for direct placement of words (=32 bit)
op_addr, // used for setting of current address (forward movement only)
op_align, // used for aligning next instruction/immediate value
} op_t;
// input file
extern FILE* f_in;
// output file
extern FILE* f_out;
// map file, 0 if unused
extern FILE* f_map;
// input filename
char* inputfile;
// do verbose output, boolean value
int verbose;
// automatically align 32bit instructions, boolean value
int autoalign;
// fill branch delay slot with nop, boolean value
int fillbds;
// continue even after error, boolean value
int continueonerror;
// error has happened in first run, boolean value
int errorhappened;
// buffer of the currently parsed line
char linebuf[500];
/* in first run, boolean value
* 1 if in first run
* 0 if in second run
*/
int isfirstrun;
// current address (byte address)
int address;
// destructor, closes programs and cleans up memory
// exitvalue: value for exit
void destruct();
#endif /* GLOBAL_H_ */