|
|
1.1 root 1: #define opnNone 0x0
2: #define opnPreRt 0x1 // contains trailing comma
3: #define opnRd 0x2
4: #define opnFd 0x4
5: #define opnRdComma 0x8
6: #define opnRdOptRs 0x10 // [Rd,] Rs
7: #define opnRs 0x20
8: #define opnFs 0x40
9: #define opnRsComma 0x80
10: #define opnRt 0x100
11: #define opnFt 0x200
12: #define opnRtComma 0x400
13: #define opnPostRs 0x800
14: #define opnImm16 0x1000
15: #define opnRel16 0x2000
16: #define opnImm10 0x4000
17: #define opnImm20 0x8000
18: #define opnImm26 0x10000
19: #define opnAddr26 0x20000
20:
21: #define opnByteIndex 0x40000
22: #define opnWordIndex 0x80000
23: #define opnDwordIndex 0x100000
24: #define opnLeftIndex 0x200000
25: #define opnRightIndex 0x400000
26: #define opnAnyIndex 0x7c0000
27:
28: #define opnShift 0x800000
29: #define opnCache 0x1000000
30:
31: #define opnR4000 0x2000000
32:
33: #define opnRdRsRt opnRd + opnRdComma + opnRs + opnRsComma + opnRt
34: #define opnRtRsImm16 opnPreRt + opnRs + opnRsComma + opnImm16
35: #define opnRsRtRel16 opnRs + opnRsComma + opnRt + opnRtComma + opnRel16
36: #define opnRsRel16 opnRs + opnRsComma + opnRel16
37: #define opnRtRd opnPreRt + opnRd
38: #define opnRsRt opnRs + opnRsComma + opnRt
39: #define opnRsRtImm10 opnRs + opnRsComma + opnRt + opnRtComma + opnImm10
40: #define opnRdRs opnRd + opnRdComma + opnRs
41: #define opnRtByteIndex opnPreRt + opnByteIndex
42: #define opnRtWordIndex opnPreRt + opnWordIndex
43: #define opnRtDwordIndex opnPreRt + opnDwordIndex
44: #define opnRtLeftIndex opnPreRt + opnLeftIndex
45: #define opnRtRightIndex opnPreRt + opnRightIndex
46: #define opnRtImm16 opnPreRt + opnImm16
47: #define opnRdRtShift opnRd + opnRdComma + opnRt + opnRtComma + opnShift
48: #define opnRdRtRs opnRd + opnRdComma + opnRt + opnRtComma + opnPostRs
49: #define opnFdFs opnFd + opnRdComma + opnFs
50: #define opnFdFsFt opnFd + opnRdComma + opnFs + opnRsComma + opnFt
51: #define opnFsFt opnFs + opnRsComma + opnFt
52: #define opnRtFs opnPreRt + opnFs
53: #define opnFtDwordIndex opnFt + opnRtComma + opnDwordIndex
54: #define opnRsImm16 opnRs + opnRsComma + opnImm16
55: #define opnCacheRightIndex opnCache + opnRightIndex
56:
57: typedef union instr {
58: ULONG instruction;
59: struct _jump_instr {
60: ULONG Target : 26;
61: ULONG Opcode : 6;
62: } jump_instr;
63: struct _break_instr {
64: ULONG Opcode : 6;
65: ULONG Fill : 10;
66: ULONG Value : 10;
67: ULONG Special : 6;
68: } break_instr;
69: struct _trap_instr {
70: ULONG Opcode : 6;
71: ULONG Value : 10;
72: ULONG RT : 5;
73: ULONG RS : 5;
74: ULONG Special : 6;
75: } trap_instr;
76: struct _immed_instr {
77: ULONG Value : 16;
78: ULONG RT : 5;
79: ULONG RS : 5;
80: ULONG Opcode : 6;
81: } immed_instr;
82: struct _special_instr {
83: ULONG Funct : 6;
84: ULONG RE : 5;
85: ULONG RD : 5;
86: ULONG RT : 5;
87: ULONG RS : 5;
88: ULONG Opcode : 6;
89: } special_instr;
90: struct _float_instr {
91: ULONG Funct : 6;
92: ULONG FD : 5;
93: ULONG FS : 5;
94: ULONG FT : 5;
95: ULONG Format : 5;
96: ULONG Opcode : 6;
97: } float_instr;
98: } INSTR;
99:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.