|
|
researchv10 Norman
/*static char sccsid[] = "@(#)c2.h 4.4 3/2/81";*/
/* @(#)c2.h 1.19 80/08/26 13:39:07 */
/*
* Header for object code improver
*/
#define JBR 1
#define CBR 2
#define JMP 3
#define LABEL 4
#define DLABEL 5
#define EROU 7
#define JSW 9
#define MOV 10
#define CLR 11
#define INC 12
#define DEC 13
#define TST 14
#define PUSH 15
#define CVT 16
#define CMP 17
#define ADD 18
#define SUB 19
#define BIT 20
#define BIC 21
#define BIS 22
#define XOR 23
#define COM 24
#define NEG 25
#define MUL 26
#define DIV 27
#define ASH 28
#define EXTV 29
#define EXTZV 30
#define INSV 31
#define CALLS 32
#define RET 33
#define CASE 34
#define SOB 35
#define TEXT 36
#define DATA 37
#define BSS 38
#define ALIGN 39
#define END 40
#define MOVZ 41
#define WGEN 42
#define SOBGEQ 43
#define SOBGTR 44
#define AOBLEQ 45
#define AOBLSS 46
#define ACB 47
#define MOVA 48
#define PUSHA 49
#define LGEN 50
#define SET 51
#define CHRINS 52
#define RSB 53
#define JSB 54
#define MFPR 55
#define MTPR 56
#define PROBER 57
#define PROBEW 58
#define LCOMM 59
#define COMM 60
#define JEQ 0
#define JNE 1
#define JLE 2
#define JGE 3
#define JLT 4
#define JGT 5
/* rearranged for unsigned branches so that jxxu = jxx + 6 */
#define JLOS 8
#define JHIS 9
#define JLO 10
#define JHI 11
#define JBC 12
#define JBS 13
#define JLBC 14
#define JLBS 15
#define JBCC 16
#define JBSC 17
#define JBCS 18
#define JBSS 19
#define BYTE 1
#define WORD 2
#define LONG 3
#define FLOAT 4
#define DOUBLE 5
#define QUAD 6
#define OP2 7
#define OP3 8
#define OPB 9
#define OPX 10
#define T(a,b) (a|((b)<<8))
#define U(a,b) (a|((b)<<4))
#define C2_ASIZE 128
struct optab {
char opstring[7];
unsigned short opcode;
} optab[];
struct node {
unsigned char op;
unsigned char subop;
short refc;
struct node *forw;
struct node *back;
struct node *ref;
char *code;
struct optab *pop;
long labno;
short seq;
};
char line[512];
struct node first;
char *curlp;
char zerlab[20]; /* arbitrary size */
int zerlablen;
int nbrbr;
int nbrret;
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 nbj;
int nfield;
int nchange;
int isn;
int debug;
char *lasta;
char *lastr;
char *firstr;
char revbr[];
#define NREG 12
char *regs[NREG+7]; /* 0-11, 6 for operands, 1 for running off end */
char conloc[C2_ASIZE];
char conval[C2_ASIZE];
char ccloc[C2_ASIZE];
#define RT1 12
#define RT2 13
#define RT3 14
#define RT4 15
#define RT5 16
#define RT6 17
#define LABHS 127
char *copy();
long getnum();
struct node *codemove();
struct node *insertl();
struct node *nonlab();
struct node *nonlabs();
struct node *alloc();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.