add LCC - a better C-Compiler for WEGA
This commit is contained in:
parent
889e37dec4
commit
f5a20ad1ad
|
|
@ -0,0 +1,153 @@
|
||||||
|
/*
|
||||||
|
* Header for object code improver
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#define CBR 2
|
||||||
|
#define JMP 4
|
||||||
|
#define JSW 5
|
||||||
|
#define LABEL 6
|
||||||
|
#define DLABEL 7
|
||||||
|
#define EROU 9
|
||||||
|
#define LD 11
|
||||||
|
#define CLR 12
|
||||||
|
#define COM 13
|
||||||
|
#define INC 14
|
||||||
|
#define DEC 15
|
||||||
|
#define NEG 16
|
||||||
|
#define TST 17
|
||||||
|
#define ASR 18
|
||||||
|
#define ASL 19
|
||||||
|
#define SXT 20
|
||||||
|
#define CMP 21
|
||||||
|
#define ADD 22
|
||||||
|
#define SUB 23
|
||||||
|
#define OR 24
|
||||||
|
#define AND 25
|
||||||
|
#define SDL 34
|
||||||
|
#define MUL 27
|
||||||
|
#define DIV 28
|
||||||
|
#define SDA 29
|
||||||
|
#define XOR 30
|
||||||
|
#define CP 31
|
||||||
|
#define CODE 32
|
||||||
|
#define CD 33
|
||||||
|
#define BSS 35
|
||||||
|
#define EVEN 36
|
||||||
|
#define DATA 37
|
||||||
|
#define CMT 38
|
||||||
|
#define SET 39
|
||||||
|
#define RES 40
|
||||||
|
#define BIT 41
|
||||||
|
#define EX 42
|
||||||
|
#define POP 43
|
||||||
|
#define PUSH 44
|
||||||
|
#define CALL 45
|
||||||
|
#define END 46
|
||||||
|
#define SRL 47
|
||||||
|
#define SLL 48
|
||||||
|
#define DJNZ 49
|
||||||
|
#define LDI 50
|
||||||
|
#define LDD 51
|
||||||
|
#define LDK 52
|
||||||
|
#define XL1 54
|
||||||
|
#define XL2 55
|
||||||
|
|
||||||
|
#define JEQ 0
|
||||||
|
#define JNE 1
|
||||||
|
#define PL 2
|
||||||
|
#define MI 3
|
||||||
|
#define JLE 4
|
||||||
|
#define JGE 5
|
||||||
|
#define JLT 6
|
||||||
|
#define JGT 7
|
||||||
|
#define JLO 8
|
||||||
|
#define JHI 9
|
||||||
|
#define JLOS 10
|
||||||
|
#define JHIS 11
|
||||||
|
|
||||||
|
#define BYTE 0x40
|
||||||
|
#define LONG 0x20
|
||||||
|
#define LSIZE 512
|
||||||
|
|
||||||
|
struct node {
|
||||||
|
char op;
|
||||||
|
char subop;
|
||||||
|
struct node *forw;
|
||||||
|
struct node *back;
|
||||||
|
struct node *ref;
|
||||||
|
int labno;
|
||||||
|
char *code;
|
||||||
|
int refc;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct optab {
|
||||||
|
char *opstring;
|
||||||
|
int opcode;
|
||||||
|
} optab[];
|
||||||
|
|
||||||
|
char line[LSIZE];
|
||||||
|
struct node first;
|
||||||
|
char *curlp;
|
||||||
|
int nbrbr;
|
||||||
|
char regc;
|
||||||
|
int nsaddr;
|
||||||
|
int redunm;
|
||||||
|
int iaftbr;
|
||||||
|
int njp1;
|
||||||
|
int nrlab;
|
||||||
|
int nxjump;
|
||||||
|
int ncmot;
|
||||||
|
int nrevbr;
|
||||||
|
int loopiv;
|
||||||
|
int nredunj;
|
||||||
|
int nskip;
|
||||||
|
int ncomj;
|
||||||
|
int nsob;
|
||||||
|
int nrtst;
|
||||||
|
int nlit;
|
||||||
|
int nchange;
|
||||||
|
int isn;
|
||||||
|
int debug;
|
||||||
|
int lastseg;
|
||||||
|
char *lasta;
|
||||||
|
char *lastr;
|
||||||
|
char *firstr;
|
||||||
|
char revbr[];
|
||||||
|
char regs[34][24];
|
||||||
|
char regt[34];
|
||||||
|
struct node * regp[34];
|
||||||
|
char regh[8][24];
|
||||||
|
char conloc[24];
|
||||||
|
char conloct;
|
||||||
|
char conval[24];
|
||||||
|
char convalt;
|
||||||
|
char ccloc[24];
|
||||||
|
char *cpcode;
|
||||||
|
char ccloct;
|
||||||
|
int tildeL[10];
|
||||||
|
|
||||||
|
#define RT1 32
|
||||||
|
#define RT2 33
|
||||||
|
#define FREG 32
|
||||||
|
#define NREG 16
|
||||||
|
#define LABHS 127
|
||||||
|
#define OPHS 79
|
||||||
|
#define BREG 8
|
||||||
|
|
||||||
|
struct optab *ophash[OPHS];
|
||||||
|
struct node *nonlab();
|
||||||
|
char *copy();
|
||||||
|
char *malloc();
|
||||||
|
char *strchr();
|
||||||
|
char *sbrk();
|
||||||
|
char *findcon();
|
||||||
|
struct node *insertl();
|
||||||
|
struct node *codemove();
|
||||||
|
char *ssgbrk();
|
||||||
|
char *alloc();
|
||||||
|
int xl1;
|
||||||
|
int xl2;
|
||||||
|
char *address[10]; /* adressen fuer alloc */
|
||||||
|
int addrseg;
|
||||||
Loading…
Reference in New Issue