📄 7db.c
字号:
"???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "CVTLQ", 0, alphafp2, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "CPYS", 0, alphafp, "CPYSN", 0, alphafp, "CPYSE", 0, alphafp, "???", 0, alphaxxx, "MOVT", 0, "FPCR,F%a", "MOVT", 0, "F%a,FPCR", "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "FCMOVEQ", 0, alphafp, "FCMOVNE", 0, alphafp, "FCMOVLT", 0, alphafp, "FCMOVGE", 0, alphafp, "FCMOVLE", 0, alphafp, "FCMOVGT", 0, alphafp, "CVTQL", 0, alphafp2, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx,};static Opcode ieeeopcodes[64] = { "ADDS", 0, alphafp, "SUBS", 0, alphafp, "MULS", 0, alphafp, "DIVS", 0, alphafp, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "ADDT", 0, alphafp, "SUBT", 0, alphafp, "MULT", 0, alphafp, "DIVT", 0, alphafp, "CMPTUN", 0, alphafp, "CMPTEQ", 0, alphafp, "CMPTLT", 0, alphafp, "CMPTLE", 0, alphafp, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "CVTTS", 0, alphafp2, "???", 0, alphaxxx, "???", 0, alphaxxx, "CVTTQ", 0, alphafp2, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "???", 0, alphaxxx, "CVTQS", 0, alphafp2, "???", 0, alphaxxx, "CVTQT", 0, alphafp2, "???", 0, alphaxxx,};static uchar amap[128] = { [0x00] 1, [0x40] 2, [0x20] 3, [0x60] 4, [0x09] 5, [0x49] 6, [0x29] 7, [0x69] 8, [0x2D] 9, [0x4D] 10, [0x6D] 11, [0x1D] 12, [0x3D] 13, [0x0F] 14, [0x02] 15, [0x0B] 16, [0x12] 17, [0x1B] 18, [0x22] 19, [0x2B] 20, [0x32] 21, [0x3B] 22,};static Opcode arithopcodes[64] = { "???", 0, alphaxxx, "ADDL", 0, alphaint, "ADDL/V", 0, alphaint, "ADDQ", 0, alphaint, "ADDQ/V", 0, alphaint, "SUBL", 0, alphaint, "SUBL/V", 0, alphaint, "SUBQ", 0, alphaint, "SUBQ/V", 0, alphaint, "CMPEQ", 0, alphaint, "CMPLT", 0, alphaint, "CMPLE", 0, alphaint, "CMPULT", 0, alphaint, "CMPULE", 0, alphaint, "CMPBGE", 0, alphaint, "S4ADDL", 0, alphaint, "S4SUBL", 0, alphaint, "S8ADDL", 0, alphaint, "S8SUBL", 0, alphaint, "S4ADDQ", 0, alphaint, "S4SUBQ", 0, alphaint, "S8ADDQ", 0, alphaint, "S8SUBQ", 0, alphaint,};static uchar lmap[128] = { [0x00] 1, [0x20] 2, [0x40] 3, [0x08] 4, [0x28] 5, [0x48] 6, [0x24] 7, [0x44] 8, [0x64] 9, [0x26] 7, [0x46] 8, [0x66] 9, [0x14] 10, [0x16] 11,};static Opcode logicalopcodes[64] = { "???", 0, alphaxxx, "AND", 0, alphaint, "OR", 0, alphaint, "XOR", 0, alphaint, "ANDNOT", 0, alphaint, "ORNOT", 0, alphaint, "XORNOT", 0, alphaint, "CMOVEQ", 0, alphaint, "CMOVLT", 0, alphaint, "CMOVLE", 0, alphaint, "CMOVNE", 0, alphaint, "CMOVGE", 0, alphaint, "CMOVGT", 0, alphaint, "CMOVLBS", 0, alphaint, "CMOVLBC", 0, alphaint,};static uchar smap[128] = { [0x39] 1, [0x3C] 2, [0x34] 3, [0x06] 4, [0x16] 5, [0x26] 6, [0x36] 7, [0x5A] 8, [0x6A] 9, [0x7A] 10, [0x0B] 11, [0x1B] 12, [0x2B] 13, [0x3B] 14, [0x57] 15, [0x67] 16, [0x77] 17, [0x02] 18, [0x12] 19, [0x22] 20, [0x32] 21, [0x52] 22, [0x62] 23, [0x72] 24, [0x30] 25, [0x31] 26,};static Opcode shiftopcodes[64] = { "???", 0, alphaxxx, "SLLQ", 0, alphaint, "SRAQ", 0, alphaint, "SRLQ", 0, alphaint, "EXTBL", 0, alphaint, "EXTWL", 0, alphaint, "EXTLL", 0, alphaint, "EXTQL", 0, alphaint, "EXTWH", 0, alphaint, "EXTLH", 0, alphaint, "EXTQH", 0, alphaint, "INSBL", 0, alphaint, "INSWL", 0, alphaint, "INSLL", 0, alphaint, "INSQL", 0, alphaint, "INSWH", 0, alphaint, "INSLH", 0, alphaint, "INSQH", 0, alphaint, "MSKBL", 0, alphaint, "MSKWL", 0, alphaint, "MSKLL", 0, alphaint, "MSKQL", 0, alphaint, "MSKWH", 0, alphaint, "MSKLH", 0, alphaint, "MSKQH", 0, alphaint, "ZAP", 0, alphaint, "ZAPNOT", 0, alphaint,};static voidformat(char *mnemonic, Instr *i, char *f){ if (mnemonic) format(0, i, mnemonic); if (f == 0) return; if (mnemonic) if (i->curr < i->end) *i->curr++ = '\t'; for ( ; *f && i->curr < i->end; f++) { if (*f != '%') { *i->curr++ = *f; continue; } switch (*++f) { case 'a': bprint(i, "%d", i->ra); break; case 'b': bprint(i, "%d", i->rb); break; case 'c': bprint(i, "%d", i->rc); break; case 'v': if (i->islit) bprint(i, "$%ux", i->literal); else bprint(i, "R%d", i->rb); break; case 'l': bprint(i, "%lx(R%d)", i->mem, i->rb); break; case 'i': bprint(i, "$%lx", i->mem); break; case 'B': i->curr += symoff(i->curr, i->end-i->curr, (i->branch<<2)+i->addr+4, CANY); break; case 'w': bprint(i, "[%lux]", i->w0); break; case '\0': *i->curr++ = '%'; return; default: bprint(i, "%%%c", *f); break; } } *i->curr = 0;}static intprintins(Map *map, uvlong pc, char *buf, int n){ Instr i; Opcode *o; uchar op; i.curr = buf; i.end = buf+n-1; mymap = map; if (mkinstr(pc, &i) < 0) return -1; switch (i.op) { case 0x10: /* INTA */ o = arithopcodes; op = amap[i.function]; break; case 0x11: /* INTL */ o = logicalopcodes; op = lmap[i.function]; break; case 0x12: /* INTS */ o = shiftopcodes; op = smap[i.function]; break; case 0x16: /* FLTI */ o = ieeeopcodes; op = i.fpfn; break; case 0x17: /* FLTL */ o = fpopcodes; op = i.fpfn; break; default: o = opcodes; op = i.op; break; } if (o[op].f) (*o[op].f)(&o[op], &i); else format(o[op].mnemonic, &i, o[op].ken); return i.size*4;}static intalphainst(Map *map, uvlong pc, char modifier, char *buf, int n){ USED(modifier); return printins(map, pc, buf, n);}static intalphadas(Map *map, uvlong pc, char *buf, int n){ Instr i; i.curr = buf; i.end = buf+n; mymap = map; if (mkinstr(pc, &i) < 0) return -1; if (i.end-i.curr > 8) i.curr = _hexify(buf, i.w0, 7); if (i.size == 2 && i.end-i.curr > 9) { *i.curr++ = ' '; i.curr = _hexify(i.curr, i.w1, 7); } *i.curr = 0; return i.size*4;}static intalphainstlen(Map *map, uvlong pc){ Instr i; mymap = map; if (mkinstr(pc, &i) < 0) return -1; return i.size*4;}static intalphafoll(Map *map, uvlong pc, Rgetter rget, uvlong *foll){ char buf[8]; Instr i; mymap = map; if (mkinstr(pc, &i) < 0) return -1; switch(i.op) { case 0x1A: /* JMP/JSR/RET */ sprint(buf, "R%d", i.rb); foll[0] = (*rget)(map, buf); return 1; case 0x30: /* BR */ case 0x34: /* BSR */ foll[0] = pc+4 + (i.branch<<2); return 1; default: if (i.op > 0x30) { /* cond */ foll[0] = pc+4; foll[1] = pc+4 + (i.branch<<2); return 2; } foll[0] = pc+i.size*4; return 1; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -