v5: add disassembler support for DATA_OPCODE
Test: TH
Change-Id: I173f5d2c86ae0f80062203f63bb6fb867606238d
diff --git a/disassembler.c b/disassembler.c
index 07b2b12..b638186 100644
--- a/disassembler.c
+++ b/disassembler.c
@@ -29,7 +29,7 @@
// superfluous ">= 0" with unsigned expressions generates compile warnings.
#define ENFORCE_UNSIGNED(c) ((c)==(uint32_t)(c))
-char print_buf[512];
+char print_buf[1024];
char* buf_ptr;
int buf_remain;
@@ -156,8 +156,15 @@
}
break;
case JMP_OPCODE:
- PRINT_OPCODE();
- print_jump_target(*pc + imm, program_len);
+ if (reg_num == 0) {
+ PRINT_OPCODE();
+ print_jump_target(*pc + imm, program_len);
+ } else {
+ print_opcode("data");
+ bprintf("%d,", imm);
+ uint32_t len = imm;
+ while (len--) bprintf("%02x", program[(*pc)++]);
+ }
break;
case JEQ_OPCODE:
case JNE_OPCODE: