|
|
1.1 ! root 1: /* ! 2: * Header for object code improver ! 3: */ ! 4: ! 5: /* tokens */ ! 6: #define JBR 1 ! 7: #define CBR 2 ! 8: #define JMP 3 ! 9: #define LABEL 4 ! 10: #define DLABEL 5 ! 11: #define EROU 6 ! 12: #define JSW 7 ! 13: #define MOV 8 ! 14: #define CLR 9 ! 15: #define INC 10 ! 16: #define DEC 11 ! 17: #define TST 12 ! 18: #define PUSH 13 ! 19: #define CVT 14 ! 20: #define CMP 15 ! 21: #define ADD 16 ! 22: #define SUB 17 ! 23: #define BIT 18 ! 24: #define AND 19 ! 25: #define OR 20 ! 26: #define XOR 21 ! 27: #define COM 22 ! 28: #define NEG 23 ! 29: #define MUL 24 ! 30: #define DIV 25 ! 31: #define EDIV 26 ! 32: #define SHAL 27 ! 33: #define SHAR 28 ! 34: #define SHL 29 ! 35: #define SHR 30 ! 36: #define CALLF 31 ! 37: #define CALLS 32 ! 38: #define RET 33 ! 39: #define CASE 34 ! 40: #define TEXT 35 ! 41: #define DATA 36 ! 42: #define BSS 37 ! 43: #define ALIGN 38 ! 44: #define END 39 ! 45: #define MOVZ 40 ! 46: #define WGEN 41 ! 47: #define ADDA 42 ! 48: #define SUBA 43 ! 49: #define AOBLEQ 44 ! 50: #define AOBLSS 45 ! 51: #define MOVA 46 ! 52: #define PUSHA 47 ! 53: #define LGEN 48 ! 54: #define SET 49 ! 55: #define MOVBLK 50 ! 56: #define MFPR 51 ! 57: #define MTPR 52 ! 58: #define PROBE 53 ! 59: #define MOVO 54 ! 60: #define LCOMM 55 ! 61: #define COMM 56 ! 62: ! 63: #define JEQ 0 ! 64: #define JNE 1 ! 65: #define JLE 2 ! 66: #define JGE 3 ! 67: #define JLT 4 ! 68: #define JGT 5 ! 69: /* rearranged for unsigned branches so that jxxu = jxx + 6 */ ! 70: #define JLOS 8 ! 71: #define JHIS 9 ! 72: #define JLO 10 ! 73: #define JHI 11 ! 74: ! 75: #define JBC 12 ! 76: #define JBS 13 ! 77: ! 78: #define BYTE 1 ! 79: #define WORD 2 ! 80: #define LONG 3 ! 81: #define QUAD 4 ! 82: #define OP2 7 ! 83: #define OP3 8 ! 84: #define OPB 9 ! 85: #define OPX 10 ! 86: ! 87: /* #define T(a,b) (a|((b)<<8)) NUXI problems */ ! 88: #define U(a,b) (a|((b)<<4)) ! 89: ! 90: #define C2_ASIZE 128 ! 91: ! 92: struct optab { ! 93: char opstring[7]; ! 94: char opcod; ! 95: unsigned char subopcod; ! 96: } optab[]; ! 97: ! 98: struct node { ! 99: char op; ! 100: unsigned char subop; ! 101: short refc; ! 102: struct node *forw; ! 103: struct node *back; ! 104: struct node *ref; ! 105: char *code; ! 106: struct optab *pop; ! 107: long labno; ! 108: short seq; ! 109: }; ! 110: ! 111: /* struct { NUXI problems ! 112: short combop; ! 113: }; */ ! 114: ! 115: char line[512]; ! 116: struct node first; ! 117: char *curlp; ! 118: int nbrbr; ! 119: int nsaddr; ! 120: int redunm; ! 121: int iaftbr; ! 122: int njp1; ! 123: int nrlab; ! 124: int nxjump; ! 125: int ncmot; ! 126: int nrevbr; ! 127: int loopiv; ! 128: int nredunj; ! 129: int nskip; ! 130: int ncomj; ! 131: int naob; ! 132: int nrtst; ! 133: int nbj; ! 134: ! 135: int nchange; ! 136: int isn; ! 137: int debug; ! 138: char *lasta; ! 139: char *lastr; ! 140: char *firstr; ! 141: char revbr[]; ! 142: #define NREG 13 ! 143: char *regs[NREG+5]; /* 0-12, 4 for operands, 1 for running off end */ ! 144: char conloc[C2_ASIZE]; ! 145: char conval[C2_ASIZE]; ! 146: char ccloc[C2_ASIZE]; ! 147: ! 148: #define RT1 NREG ! 149: #define RT2 NREG+1 ! 150: #define RT3 NREG+2 ! 151: #define RT4 NREG+3 ! 152: #define LABHS 127 ! 153: ! 154: char *copy(); ! 155: long getnum(); ! 156: struct node *codemove(); ! 157: struct node *insertl(); ! 158: struct node *nonlab(); ! 159: struct node *alloc(); ! 160: #define COPYCODE
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.