v5: add disassembler support for JDNSQMATCH_EXT_OPCODE
Test: TH
Change-Id: Ib42c7f7f0d4a7c952dbfab21f4da9b4a69fd39ac
diff --git a/disassembler.c b/disassembler.c
index cda64f7..5e3100a 100644
--- a/disassembler.c
+++ b/disassembler.c
@@ -298,6 +298,30 @@
break;
}
+ case JDNSQMATCH_EXT_OPCODE: {
+ if (reg_num == 0) {
+ print_opcode("jdnsqne");
+ } else {
+ print_opcode("jdnsqeq");
+ }
+ bprintf("r0, ");
+ uint32_t offs = 0;
+ DECODE_IMM(offs, 1 << (len_field - 1));
+ uint16_t qtype = 0;
+ DECODE_IMM(qtype, 1);
+ uint32_t end = *pc;
+ while (end + 1 < program_len && !(program[end] == 0 && program[end + 1] == 0)) {
+ end++;
+ }
+ end += 2;
+ print_jump_target(end + offs, program_len);
+ bprintf(", %d, ", qtype);
+ while (*pc < end) {
+ uint8_t byte = program[(*pc)++];
+ bprintf("%02x", byte);
+ }
+ break;
+ }
default:
bprintf("unknown_ext %u", imm);
break;