30#if V8_TARGET_ARCH_MIPS64
67 void Print(
const char* str);
72 void PrintMSARegister(
int wreg);
74 void PrintMSAControlRegister(
int creg);
75 void PrintRs(Instruction*
instr);
76 void PrintRt(Instruction*
instr);
78 void PrintFs(Instruction*
instr);
79 void PrintFt(Instruction*
instr);
80 void PrintFd(Instruction*
instr);
81 void PrintSa(Instruction*
instr);
82 void PrintLsaSa(Instruction*
instr);
83 void PrintSd(Instruction*
instr);
84 void PrintSs1(Instruction*
instr);
85 void PrintSs2(Instruction*
instr);
86 void PrintSs3(Instruction*
instr);
87 void PrintSs4(Instruction*
instr);
88 void PrintSs5(Instruction*
instr);
89 void PrintBc(Instruction*
instr);
90 void PrintCc(Instruction*
instr);
91 void PrintFunction(Instruction*
instr);
92 void PrintSecondaryField(Instruction*
instr);
93 void PrintUImm9(Instruction*
instr);
94 void PrintSImm9(Instruction*
instr);
95 void PrintUImm16(Instruction*
instr);
96 void PrintSImm16(Instruction*
instr);
97 void PrintXImm16(Instruction*
instr);
98 void PrintPCImm16(Instruction*
instr,
int delta_pc,
int n_bits);
99 void PrintXImm18(Instruction*
instr);
100 void PrintSImm18(Instruction*
instr);
101 void PrintXImm19(Instruction*
instr);
102 void PrintSImm19(Instruction*
instr);
103 void PrintXImm21(Instruction*
instr);
104 void PrintSImm21(Instruction*
instr);
105 void PrintPCImm21(Instruction*
instr,
int delta_pc,
int n_bits);
106 void PrintXImm26(Instruction*
instr);
107 void PrintSImm26(Instruction*
instr);
108 void PrintPCImm26(Instruction*
instr,
int delta_pc,
int n_bits);
109 void PrintPCImm26(Instruction*
instr);
111 void PrintFormat(Instruction*
instr);
112 void PrintBp2(Instruction*
instr);
113 void PrintBp3(Instruction*
instr);
114 void PrintMsaDataFormat(Instruction*
instr);
115 void PrintMsaXImm8(Instruction*
instr);
116 void PrintMsaImm8(Instruction*
instr);
117 void PrintMsaImm5(Instruction*
instr);
118 void PrintMsaSImm5(Instruction*
instr);
119 void PrintMsaSImm10(Instruction*
instr,
bool is_mi10 =
false);
120 void PrintMsaImmBit(Instruction*
instr);
121 void PrintMsaImmElm(Instruction*
instr);
122 void PrintMsaCopy(Instruction*
instr);
128 int FormatFPURegister(Instruction*
instr,
const char* option);
129 int FormatMSARegister(Instruction*
instr,
const char* option);
131 void Format(Instruction*
instr,
const char* format);
133 int DecodeBreakInstr(Instruction*
instr);
136 bool DecodeTypeRegisterRsType(Instruction*
instr);
137 void DecodeTypeRegisterSRsType(Instruction*
instr);
138 void DecodeTypeRegisterDRsType(Instruction*
instr);
139 void DecodeTypeRegisterLRsType(Instruction*
instr);
140 void DecodeTypeRegisterWRsType(Instruction*
instr);
141 void DecodeTypeRegisterSPECIAL(Instruction*
instr);
142 void DecodeTypeRegisterSPECIAL2(Instruction*
instr);
143 void DecodeTypeRegisterSPECIAL3(Instruction*
instr);
144 void DecodeTypeRegisterCOP1(Instruction*
instr);
145 void DecodeTypeRegisterCOP1X(Instruction*
instr);
146 int DecodeTypeRegister(Instruction*
instr);
148 void DecodeTypeImmediateCOP1(Instruction*
instr);
149 void DecodeTypeImmediateREGIMM(Instruction*
instr);
150 void DecodeTypeImmediateSPECIAL3(Instruction*
instr);
151 void DecodeTypeImmediate(Instruction*
instr);
153 void DecodeTypeJump(Instruction*
instr);
155 void DecodeTypeMsaI8(Instruction*
instr);
156 void DecodeTypeMsaI5(Instruction*
instr);
157 void DecodeTypeMsaI10(Instruction*
instr);
158 void DecodeTypeMsaELM(Instruction*
instr);
159 void DecodeTypeMsaBIT(Instruction*
instr);
160 void DecodeTypeMsaMI10(Instruction*
instr);
161 void DecodeTypeMsa3R(Instruction*
instr);
162 void DecodeTypeMsa3RF(Instruction*
instr);
163 void DecodeTypeMsaVec(Instruction*
instr);
164 void DecodeTypeMsa2R(Instruction*
instr);
165 void DecodeTypeMsa2RF(Instruction*
instr);
173#define STRING_STARTS_WITH(string, compare_string) \
174 (strncmp(string, compare_string, strlen(compare_string)) == 0)
194void Decoder::PrintRs(Instruction*
instr) {
199void Decoder::PrintRt(Instruction*
instr) {
226void Decoder::PrintMSAControlRegister(
int creg) {
239void Decoder::PrintFs(Instruction*
instr) {
240 int freg =
instr->RsValue();
244void Decoder::PrintFt(Instruction*
instr) {
245 int freg =
instr->RtValue();
249void Decoder::PrintFd(Instruction*
instr) {
250 int freg =
instr->RdValue();
255void Decoder::PrintSa(Instruction*
instr) {
256 int sa =
instr->SaValue();
261void Decoder::PrintLsaSa(Instruction*
instr) {
262 int sa =
instr->LsaSaValue() + 1;
267void Decoder::PrintSd(Instruction*
instr) {
268 int sd =
instr->RdValue();
273void Decoder::PrintSs1(Instruction*
instr) {
274 int msbd =
instr->RdValue();
281void Decoder::PrintSs2(Instruction*
instr) {
282 int msb =
instr->RdValue();
283 int lsb =
instr->SaValue();
289void Decoder::PrintSs3(Instruction*
instr) {
290 int msbdminus32 =
instr->RdValue();
296void Decoder::PrintSs4(Instruction*
instr) {
297 int msbminus32 =
instr->RdValue();
298 int lsb =
instr->SaValue();
300 msbminus32 + 32 - lsb + 1);
304void Decoder::PrintSs5(Instruction*
instr) {
305 int lsbminus32 =
instr->SaValue();
311void Decoder::PrintBc(Instruction*
instr) {
317void Decoder::PrintCc(Instruction*
instr) {
324void Decoder::PrintUImm9(Instruction*
instr) {
330void Decoder::PrintSImm9(Instruction*
instr) {
336void Decoder::PrintUImm16(Instruction*
instr) {
342void Decoder::PrintSImm16(Instruction*
instr) {
349void Decoder::PrintXImm16(Instruction*
instr) {
357void Decoder::PrintPCImm16(Instruction*
instr,
int delta_pc,
int n_bits) {
361 converter_.NameOfAddress(
reinterpret_cast<uint8_t*
>(
instr) + delta_pc +
366void Decoder::PrintSImm18(Instruction*
instr) {
373void Decoder::PrintXImm18(Instruction*
instr) {
379void Decoder::PrintXImm19(Instruction*
instr) {
385void Decoder::PrintSImm19(Instruction*
instr) {
394void Decoder::PrintXImm21(Instruction*
instr) {
395 uint32_t imm =
instr->Imm21Value();
400void Decoder::PrintSImm21(Instruction*
instr) {
411void Decoder::PrintPCImm21(Instruction*
instr,
int delta_pc,
int n_bits) {
418 converter_.NameOfAddress(
reinterpret_cast<uint8_t*
>(
instr) + delta_pc +
423void Decoder::PrintXImm26(Instruction*
instr) {
424 uint64_t target =
static_cast<uint64_t
>(
instr->Imm26Value())
426 target = (
reinterpret_cast<uint64_t
>(
instr) & ~0xFFFFFFF) | target;
432void Decoder::PrintSImm26(Instruction*
instr) {
443void Decoder::PrintPCImm26(Instruction*
instr,
int delta_pc,
int n_bits) {
450 converter_.NameOfAddress(
reinterpret_cast<uint8_t*
>(
instr) + delta_pc +
457void Decoder::PrintPCImm26(Instruction*
instr) {
459 uint64_t pc_mask = ~0xFFFFFFF;
460 uint64_t
pc = ((uint64_t)(
instr + 1) & pc_mask) | (imm26 << 2);
463 converter_.NameOfAddress((
reinterpret_cast<uint8_t*
>(
pc))));
466void Decoder::PrintBp2(Instruction*
instr) {
467 int bp2 =
instr->Bp2Value();
471void Decoder::PrintBp3(Instruction*
instr) {
472 int bp3 =
instr->Bp3Value();
477void Decoder::PrintCode(Instruction*
instr) {
480 switch (
instr->FunctionFieldRaw()) {
484 "0x%05x (%d)", code, code);
503void Decoder::PrintMsaXImm8(Instruction*
instr) {
508void Decoder::PrintMsaImm8(Instruction*
instr) {
513void Decoder::PrintMsaImm5(Instruction*
instr) {
518void Decoder::PrintMsaSImm5(Instruction*
instr) {
525void Decoder::PrintMsaSImm10(Instruction*
instr,
bool is_mi10) {
532void Decoder::PrintMsaImmBit(Instruction*
instr) {
537void Decoder::PrintMsaImmElm(Instruction*
instr) {
542void Decoder::PrintMsaCopy(Instruction*
instr) {
551void Decoder::PrintFormat(Instruction*
instr) {
552 char formatLetter =
' ';
553 switch (
instr->RsFieldRaw()) {
572void Decoder::PrintMsaDataFormat(Instruction*
instr) {
575 if (
instr->IsMSABranchInstr()) {
576 switch (
instr->RsFieldRaw()) {
601 char DF[] = {
'b',
'h',
'w',
'd'};
602 switch (
instr->MSAMinorOpcodeField()) {
606 df = DF[
instr->Bits(22, 21)];
609 df = DF[
instr->Bits(1, 0)];
612 df = DF[
instr->MsaBitDf()];
615 df = DF[
instr->MsaElmDf()];
628 df = DF[1 +
instr->Bit(21)];
631 df = DF[2 +
instr->Bit(21)];
636 df = DF[
instr->Bits(17, 16)];
639 df = DF[2 +
instr->Bit(16)];
656 if (format[1] ==
's') {
660 }
else if (format[1] ==
't') {
664 }
else if (format[1] ==
'd') {
674int Decoder::FormatFPURegister(Instruction*
instr,
const char* format) {
677 if (format[1] ==
's') {
681 }
else if (format[1] ==
't') {
685 }
else if (format[1] ==
'd') {
689 }
else if (format[1] ==
'r') {
695 if (format[1] ==
's') {
699 }
else if (format[1] ==
't') {
703 }
else if (format[1] ==
'd') {
707 }
else if (format[1] ==
'r') {
718int Decoder::FormatMSARegister(Instruction*
instr,
const char* format) {
720 if (format[1] ==
's') {
722 PrintMSARegister(
reg);
724 }
else if (format[1] ==
't') {
726 PrintMSARegister(
reg);
728 }
else if (format[1] ==
'd') {
730 PrintMSARegister(
reg);
750 if (format[3] ==
'1') {
751 if (format[4] ==
'6') {
778 PrintPCImm16(
instr, delta_pc, n_bits);
786 }
else if (format[4] ==
'8') {
799 }
else if (format[4] ==
'9') {
812 }
else if (format[4] ==
'0' && format[5] ==
's') {
814 if (format[6] ==
'1') {
816 PrintMsaSImm10(
instr,
false);
817 }
else if (format[6] ==
'2') {
819 PrintMsaSImm10(
instr,
true);
823 }
else if (format[3] ==
'2' && format[4] ==
'1') {
846 PrintPCImm21(
instr, delta_pc, n_bits);
854 }
else if (format[3] ==
'2' && format[4] ==
'6') {
877 PrintPCImm26(
instr, delta_pc, n_bits);
890 }
else if (format[3] ==
'5') {
892 if (format[4] ==
'u') {
895 }
else if (format[4] ==
's') {
897 PrintMsaSImm5(
instr);
900 }
else if (format[3] ==
'8') {
904 }
else if (format[3] ==
'9') {
906 if (format[4] ==
'u') {
909 }
else if (format[4] ==
's') {
914 }
else if (format[3] ==
'b') {
916 PrintMsaImmBit(
instr);
918 }
else if (format[3] ==
'e') {
920 PrintMsaImmElm(
instr);
929 return FormatFPURegister(
instr, format);
932 return FormatMSARegister(
instr, format);
937 if (format[2] ==
'2') {
952 if (format[2] ==
'1') {
955 }
else if (format[2] ==
'2') {
958 }
else if (format[2] ==
'3') {
961 }
else if (format[2] ==
'4') {
1001 if (
instr->IsMSAInstr()) {
1002 PrintMsaDataFormat(
instr);
1015 char cur = *format++;
1031int Decoder::DecodeBreakInstr(Instruction*
instr) {
1039 reinterpret_cast<uint64_t
>(
1049bool Decoder::DecodeTypeRegisterRsType(Instruction*
instr) {
1050 switch (
instr->FunctionFieldRaw()) {
1070 if (
instr->Bit(16)) {
1184void Decoder::DecodeTypeRegisterSRsType(Instruction*
instr) {
1185 if (!DecodeTypeRegisterRsType(
instr)) {
1186 switch (
instr->FunctionFieldRaw()) {
1203void Decoder::DecodeTypeRegisterDRsType(Instruction*
instr) {
1204 if (!DecodeTypeRegisterRsType(
instr)) {
1205 switch (
instr->FunctionFieldRaw()) {
1219void Decoder::DecodeTypeRegisterLRsType(Instruction*
instr) {
1220 switch (
instr->FunctionFieldRaw()) {
1265void Decoder::DecodeTypeRegisterWRsType(Instruction*
instr) {
1266 switch (
instr->FunctionValue()) {
1311void Decoder::DecodeTypeRegisterCOP1(Instruction*
instr) {
1312 switch (
instr->RsFieldRaw()) {
1339 DecodeTypeRegisterSRsType(
instr);
1342 DecodeTypeRegisterDRsType(
instr);
1345 DecodeTypeRegisterWRsType(
instr);
1348 DecodeTypeRegisterLRsType(
instr);
1355void Decoder::DecodeTypeRegisterCOP1X(Instruction*
instr) {
1356 switch (
instr->FunctionFieldRaw()) {
1374void Decoder::DecodeTypeRegisterSPECIAL(Instruction*
instr) {
1375 switch (
instr->FunctionFieldRaw()) {
1383 if (0x0 ==
static_cast<int>(
instr->InstructionBits()))
1406 if (
instr->RsValue() == 0) {
1413 if (
instr->RsValue() == 0) {
1420 if (
instr->RsValue() == 0) {
1442 if (
instr->SaValue() == 0) {
1449 if (
instr->SaValue() == 0) {
1468 if (
instr->Bits(25, 16) == 0) {
1473 }
else if ((
instr->FunctionFieldRaw() ==
CLO_R6) &&
1474 (
instr->FdValue() == 1)) {
1480 if (
instr->Bits(25, 16) == 0) {
1486 (
instr->FdValue() == 1)) {
1597 if (0 ==
instr->RsValue()) {
1599 }
else if (0 ==
instr->RtValue()) {
1645 if (
instr->Bit(16)) {
1662void Decoder::DecodeTypeRegisterSPECIAL2(Instruction*
instr) {
1663 switch (
instr->FunctionFieldRaw()) {
1682void Decoder::DecodeTypeRegisterSPECIAL3(Instruction*
instr) {
1683 switch (
instr->FunctionFieldRaw()) {
1791int Decoder::DecodeTypeRegister(Instruction*
instr) {
1792 switch (
instr->OpcodeFieldRaw()) {
1794 DecodeTypeRegisterCOP1(
instr);
1797 DecodeTypeRegisterCOP1X(
instr);
1800 switch (
instr->FunctionFieldRaw()) {
1802 return DecodeBreakInstr(
instr);
1804 DecodeTypeRegisterSPECIAL(
instr);
1809 DecodeTypeRegisterSPECIAL2(
instr);
1812 DecodeTypeRegisterSPECIAL3(
instr);
1815 switch (
instr->MSAMinorOpcodeField()) {
1817 DecodeTypeMsa3R(
instr);
1820 DecodeTypeMsa3RF(
instr);
1823 DecodeTypeMsaVec(
instr);
1826 DecodeTypeMsa2R(
instr);
1829 DecodeTypeMsa2RF(
instr);
1832 DecodeTypeMsaELM(
instr);
1844void Decoder::DecodeTypeImmediateCOP1(Instruction*
instr) {
1845 switch (
instr->RsFieldRaw()) {
1847 if (
instr->FBtrueValue()) {
1854 Format(
instr,
"bc1eqz 'ft, 'imm16u -> 'imm16p4s2");
1857 Format(
instr,
"bc1nez 'ft, 'imm16u -> 'imm16p4s2");
1864 Format(
instr,
"bz.'t 'wt, 'imm16s -> 'imm16p4s2");
1871 Format(
instr,
"bnz.'t 'wt, 'imm16s -> 'imm16p4s2");
1878void Decoder::DecodeTypeImmediateREGIMM(Instruction*
instr) {
1879 switch (
instr->RtFieldRaw()) {
1884 Format(
instr,
"bltzal 'rs, 'imm16u -> 'imm16p4s2");
1890 if (
instr->RsValue() == 0)
1893 Format(
instr,
"bgezal 'rs, 'imm16u -> 'imm16p4s2");
1897 Format(
instr,
"bgezall 'rs, 'imm16u -> 'imm16p4s2");
1910void Decoder::DecodeTypeImmediateSPECIAL3(Instruction*
instr) {
1911 switch (
instr->FunctionFieldRaw()) {
1949void Decoder::DecodeTypeImmediate(Instruction*
instr) {
1950 switch (
instr->OpcodeFieldRaw()) {
1952 DecodeTypeImmediateCOP1(
instr);
1956 DecodeTypeImmediateREGIMM(
instr);
1960 Format(
instr,
"beq 'rs, 'rt, 'imm16u -> 'imm16p4s2");
1969 Format(
instr,
"bne 'rs, 'rt, 'imm16u -> 'imm16p4s2");
1972 if ((
instr->RtValue() == 0) && (
instr->RsValue() != 0)) {
1974 }
else if ((
instr->RtValue() !=
instr->RsValue()) &&
1975 (
instr->RsValue() != 0) && (
instr->RtValue() != 0)) {
1976 Format(
instr,
"bgeuc 'rs, 'rt, 'imm16u -> 'imm16p4s2");
1977 }
else if ((
instr->RtValue() ==
instr->RsValue()) &&
1978 (
instr->RtValue() != 0)) {
1979 Format(
instr,
"bgezalc 'rs, 'imm16u -> 'imm16p4s2");
1980 }
else if ((
instr->RsValue() == 0) && (
instr->RtValue() != 0)) {
1981 Format(
instr,
"blezalc 'rt, 'imm16u -> 'imm16p4s2");
1987 if ((
instr->RtValue() == 0) && (
instr->RsValue() != 0)) {
1989 }
else if ((
instr->RtValue() !=
instr->RsValue()) &&
1990 (
instr->RsValue() != 0) && (
instr->RtValue() != 0)) {
1991 Format(
instr,
"bltuc 'rs, 'rt, 'imm16u -> 'imm16p4s2");
1992 }
else if ((
instr->RtValue() ==
instr->RsValue()) &&
1993 (
instr->RtValue() != 0)) {
1994 Format(
instr,
"bltzalc 'rt, 'imm16u -> 'imm16p4s2");
1995 }
else if ((
instr->RsValue() == 0) && (
instr->RtValue() != 0)) {
1996 Format(
instr,
"bgtzalc 'rt, 'imm16u -> 'imm16p4s2");
2002 if ((
instr->RtValue() ==
instr->RsValue()) && (
instr->RtValue() != 0)) {
2003 Format(
instr,
"bgezc 'rt, 'imm16u -> 'imm16p4s2");
2004 }
else if ((
instr->RtValue() !=
instr->RsValue()) &&
2005 (
instr->RsValue() != 0) && (
instr->RtValue() != 0)) {
2006 Format(
instr,
"bgec 'rs, 'rt, 'imm16u -> 'imm16p4s2");
2007 }
else if ((
instr->RsValue() == 0) && (
instr->RtValue() != 0)) {
2008 Format(
instr,
"blezc 'rt, 'imm16u -> 'imm16p4s2");
2014 if ((
instr->RtValue() ==
instr->RsValue()) && (
instr->RtValue() != 0)) {
2015 Format(
instr,
"bltzc 'rt, 'imm16u -> 'imm16p4s2");
2016 }
else if ((
instr->RtValue() !=
instr->RsValue()) &&
2017 (
instr->RsValue() != 0) && (
instr->RtValue() != 0)) {
2018 Format(
instr,
"bltc 'rs, 'rt, 'imm16u -> 'imm16p4s2");
2019 }
else if ((
instr->RsValue() == 0) && (
instr->RtValue() != 0)) {
2020 Format(
instr,
"bgtzc 'rt, 'imm16u -> 'imm16p4s2");
2029 Format(
instr,
"beqzc 'rs, 'imm21s -> 'imm21p4s2");
2036 Format(
instr,
"bnezc 'rs, 'imm21s -> 'imm21p4s2");
2044 int rs_reg =
instr->RsValue();
2045 int rt_reg =
instr->RtValue();
2047 if (rs_reg >= rt_reg) {
2048 Format(
instr,
"bovc 'rs, 'rt, 'imm16s -> 'imm16p4s2");
2052 Format(
instr,
"beqzalc 'rt, 'imm16s -> 'imm16p4s2");
2054 Format(
instr,
"beqc 'rs, 'rt, 'imm16s -> 'imm16p4s2");
2063 int rs_reg =
instr->RsValue();
2064 int rt_reg =
instr->RtValue();
2066 if (rs_reg >= rt_reg) {
2067 Format(
instr,
"bnvc 'rs, 'rt, 'imm16s -> 'imm16p4s2");
2071 Format(
instr,
"bnezalc 'rt, 'imm16s -> 'imm16p4s2");
2073 Format(
instr,
"bnec 'rs, 'rt, 'imm16s -> 'imm16p4s2");
2103 if (
instr->RsValue() != 0) {
2257 DecodeTypeImmediateSPECIAL3(
instr);
2260 switch (
instr->MSAMinorOpcodeField()) {
2262 DecodeTypeMsaI8(
instr);
2265 DecodeTypeMsaI5(
instr);
2268 DecodeTypeMsaI10(
instr);
2271 DecodeTypeMsaELM(
instr);
2274 DecodeTypeMsaBIT(
instr);
2277 DecodeTypeMsaMI10(
instr);
2284 printf(
"a 0x%x \n",
instr->OpcodeFieldRaw());
2289void Decoder::DecodeTypeJump(Instruction*
instr) {
2290 switch (
instr->OpcodeFieldRaw()) {
2302void Decoder::DecodeTypeMsaI8(Instruction*
instr) {
2341void Decoder::DecodeTypeMsaI5(Instruction*
instr) {
2383void Decoder::DecodeTypeMsaI10(Instruction*
instr) {
2385 if (opcode ==
LDI) {
2392void Decoder::DecodeTypeMsaELM(Instruction*
instr) {
2396 if (
instr->Bits(21, 16) == 0x3E) {
2398 PrintMSAControlRegister(
instr->WdValue());
2406 if (
instr->Bits(21, 16) == 0x3E) {
2410 PrintMSAControlRegister(
instr->WsValue());
2416 if (
instr->Bits(21, 16) == 0x3E) {
2420 PrintMsaCopy(
instr);
2425 PrintMsaCopy(
instr);
2439void Decoder::DecodeTypeMsaBIT(Instruction*
instr) {
2484void Decoder::DecodeTypeMsaMI10(Instruction*
instr) {
2490 }
else if (opcode ==
MSA_ST) {
2499void Decoder::DecodeTypeMsa3R(Instruction*
instr) {
2696void Decoder::DecodeTypeMsa3RF(Instruction*
instr) {
2827void Decoder::DecodeTypeMsaVec(Instruction*
instr) {
2856void Decoder::DecodeTypeMsa2R(Instruction*
instr) {
2877void Decoder::DecodeTypeMsa2RF(Instruction*
instr) {
2941 "%08x ",
instr->InstructionBits());
2942 switch (
instr->InstructionType()) {
2944 return DecodeTypeRegister(
instr);
2947 DecodeTypeImmediate(
instr);
2951 DecodeTypeJump(
instr);
2999 uint8_t* instruction) {
3001 return d.InstructionDecode(instruction);
3008 UnimplementedOpcodeAction unimplemented_action) {
3009 NameConverter converter;
3011 for (uint8_t*
pc = begin;
pc <
end;) {
3014 uint8_t* prev_pc =
pc;
3015 pc += d.InstructionDecode(buffer,
pc);
3021#undef STRING_STARTS_WITH
static V8_EXPORT_PRIVATE void Disassemble(FILE *f, uint8_t *begin, uint8_t *end, UnimplementedOpcodeAction unimplemented_action=kAbortOnUnimplementedOpcode)
V8_EXPORT_PRIVATE int InstructionDecode(v8::base::Vector< char > buffer, uint8_t *instruction)
int ConstantPoolSizeAt(uint8_t *instruction)
Disassembler(const NameConverter &converter, UnimplementedOpcodeAction unimplemented_opcode_action=kAbortOnUnimplementedOpcode)
const NameConverter & converter_
virtual const char * NameOfAddress(uint8_t *addr) const
virtual const char * NameOfXMMRegister(int reg) const
virtual const char * NameInCode(uint8_t *addr) const
virtual const char * NameOfConstant(uint8_t *addr) const
v8::base::EmbeddedVector< char, 128 > tmp_buffer_
virtual const char * NameOfByteCPURegister(int reg) const
virtual const char * NameOfCPURegister(int reg) const
constexpr T * begin() const
void Format(Instruction *instr, const char *format)
void PrintFPUStatusRegister(int freg)
void PrintFPURegister(int freg)
int InstructionDecode(uint8_t *instruction)
void Unknown(Instruction *instr)
const disasm::NameConverter & converter_
void PrintRegister(int reg)
void PrintRd(Instruction *instr)
void PrintChar(const char ch)
v8::base::Vector< char > out_buffer_
void PrintInstructionName(Instruction *instr)
int FormatOption(Instruction *instr, const char *option)
int FormatRegister(Instruction *instr, const char *option)
void Print(const char *str)
Decoder & operator=(const Decoder &)=delete
static const char * Name(int reg)
static Instruction * At(Address pc)
static const char * Name(int reg)
static const char * Name(int reg)
#define UNSUPPORTED_MIPS()
static const ArchVariants kArchVariant
#define STRING_STARTS_WITH(string, compare_string)
int SNPrintF(Vector< char > str, const char *format,...)
void PrintCode(Isolate *isolate, DirectHandle< Code > code, OptimizedCompilationInfo *info)
constexpr MiscInstructionsBits74 CLZ
constexpr MoveWideImmediateOp MOVZ
constexpr MoveWideImmediateOp MOVN
constexpr BarrierOption LD
void PrintF(const char *format,...)
constexpr uint32_t kMaxStopCode
constexpr FPDataProcessing2SourceOp FSUB
constexpr FPDataProcessing2SourceOp FMAX
constexpr Opcode SPECIAL2
constexpr FPDataProcessing2SourceOp FDIV
constexpr FPDataProcessing2SourceOp FADD
constexpr FPDataProcessing2SourceOp FMIN
constexpr uint8_t kInstrSize
constexpr Opcode SPECIAL3
const int kMSACSRRegister
constexpr FPDataProcessing2SourceOp FMUL
constexpr FPDataProcessing1SourceOp FSQRT
#define DCHECK(condition)
#define DCHECK_EQ(v1, v2)
#define DCHECK_GT(v1, v2)