|
|
1.1 ! root 1: /* @(#)kas2.c 1.2 */ ! 2: #include <stdio.h> ! 3: #include "kas.h" ! 4: #include "kas.yh" ! 5: #define OP(a,b,c) {a,b|XTAG,c} ! 6: #define R(a,b) {a,REG|XTAG,b} ! 7: #define RL(a,b) {a,REGL|XTAG,b} ! 8: #define RH(a,b) {a,REGH|XTAG,b} ! 9: #define M(a,b) {a,DEBUG|XTAG,b} ! 10: #define P(a,b) {a,PAGE|XTAG,b} ! 11: struct symtab instab[] = { ! 12: OP("mov", MVINS, 0), ! 13: OP("inc", SFINS, (3<<4)), ! 14: OP("adc", SFINS, (4<<4)), ! 15: OP("asl", SFINS, (5<<4)), ! 16: OP("aslc", SFINS, (6<<4)), ! 17: OP("dec", SFINS, (7<<4)), ! 18: OP("add", DFINS, (0<<4)), ! 19: OP("addc", DFINS, (1<<4)), ! 20: OP("subc", DFINS, (2<<4)), ! 21: OP("orn", DFINS, (10<<4)), ! 22: OP("and", DFINS, (11<<4)), ! 23: OP("or", DFINS, (12<<4)), ! 24: OP("xor", DFINS, (13<<4)), ! 25: OP("sub", DFINS, (14<<4)), ! 26: OP("addn", DFINS, (15<<4)), ! 27: OP("jmp", JMPINS, (0<<8)|0100000), ! 28: OP("br", BRINS, (1<<8)|0100000), ! 29: OP("brc", BRINS, (2<<8)|0100000), ! 30: OP("brz", BRINS, (3<<8)|0100000), ! 31: OP("br0", BRINS, (4<<8)|0100000), ! 32: OP("br1", BRINS, (5<<8)|0100000), ! 33: OP("br4", BRINS, (6<<8)|0100000), ! 34: OP("br7", BRINS, (7<<8)|0100000), ! 35: R("r0", 0), ! 36: R("r1", 1), ! 37: R("r2", 2), ! 38: R("r3", 3), ! 39: R("r4", 4), ! 40: R("r5", 5), ! 41: R("r6", 6), ! 42: R("r7", 7), ! 43: R("r8", 8), ! 44: R("r9", 9), ! 45: R("r10", 10), ! 46: R("r11", 11), ! 47: R("r12", 12), ! 48: R("r13", 13), ! 49: R("r14", 14), ! 50: R("r15", 15), ! 51: {"mem", MEM|XTAG, 0}, ! 52: {"brg", BRG|XTAG, 0}, ! 53: {"mar", MAR|XTAG, 0}, ! 54: {"pc", PC|XTAG, 0}, ! 55: {"pcr", PCR|XTAG, 0}, ! 56: RL("idl", 0), ! 57: RL("idh", 1), ! 58: RL("odl", 2), ! 59: RL("odh", 3), ! 60: RL("ial", 4), ! 61: RL("iah", 5), ! 62: RL("oal", 6), ! 63: RL("oah", 7), ! 64: RL("lur0", 8+0), ! 65: RL("lur1", 8+1), ! 66: RL("lur2", 8+2), ! 67: RL("lur3", 8+3), ! 68: RL("lur4", 8+4), ! 69: RL("lur5", 8+5), ! 70: RL("lur6", 8+6), ! 71: RL("lur7", 8+7), ! 72: RH("csr0", 0), ! 73: RH("csr1", 1), ! 74: RH("csr2", 2), ! 75: RH("csr3", 3), ! 76: RH("csr4", 4), ! 77: RH("csr5", 5), ! 78: RH("csr6", 6), ! 79: RH("csr7", 7), ! 80: RH("npr", 8+0), ! 81: RH("nprx", 8+1), ! 82: P("p0",0), ! 83: P("p1",1<<11), ! 84: P("p2",2<<11), ! 85: P("p3",3<<11), ! 86: {".", XTEXT, 0}, ! 87: {".text", SEG|XTAG, XTEXT}, ! 88: {".data", SEG|XTAG, XDATA}, ! 89: {".org", ORG|XTAG, 0}, ! 90: {".byte", DATA|XTAG, 1}, ! 91: {".word", DATA|XTAG, 2}, ! 92: M(".load", DLOAD), ! 93: M(".dump", DDUMP), ! 94: M(".step", DSTEP), ! 95: M(".run", DRUN), ! 96: M(".reset", DRESET), ! 97: M(".wcsr", DWCSR), ! 98: M(".clear", DCLEAR), ! 99: M(".stop", DSTOP), ! 100: M(".regs", DREGS), ! 101: 0, ! 102: }; ! 103: ! 104: struct symtab symtab[NSYM]; ! 105: struct symtab *hshtab[NHASH]; ! 106: struct symtab loclab[10]; ! 107: struct symtab *dot; ! 108: int tsize; ! 109: int dsize; ! 110: int anyerrs; ! 111: int textsv, datasv; ! 112: char dbmode; ! 113: char *outfile, *dbfile, *infile; ! 114: int dbfd; ! 115: int dbtab[3]; ! 116: char dbstr[50], instr[50]; ! 117: short ispace[NKMCI], reloc[NKMCI]; ! 118: char dspace[NKMCD]; ! 119: struct ir ir;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.