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: