Add disassembler support for STDW and LDDW opcodes in v6 mode

Test: TH
Change-Id: I8084339e173357a23a6ffc0120f69c160ef4628f
diff --git a/disassembler.c b/disassembler.c
index 65b90d1..ad72982 100644
--- a/disassembler.c
+++ b/disassembler.c
@@ -32,6 +32,7 @@
 char print_buf[1024];
 char* buf_ptr;
 int buf_remain;
+bool v6_mode = false;
 
 __attribute__ ((format (printf, 1, 2) ))
 static void bprintf(const char* format, ...) {
@@ -162,6 +163,7 @@
                 PRINT_OPCODE();
                 print_jump_target(*ptr2pc + imm, program_len);
             } else {
+                v6_mode = true;
                 print_opcode("data");
                 bprintf("%d, ", imm);
                 uint32_t len = imm;
@@ -356,12 +358,20 @@
         case LDDW_OPCODE:
         case STDW_OPCODE:
             PRINT_OPCODE();
-            if (signed_imm > 0) {
-                bprintf("r%u, [r%u+%d]", reg_num, reg_num ^ 1, signed_imm);
-            } else if (signed_imm < 0) {
-                bprintf("r%u, [r%u-%d]", reg_num, reg_num ^ 1, -signed_imm);
+            if (v6_mode) {
+                if (opcode == LDDW_OPCODE) {
+                    bprintf("r%u, cnt=%d", reg_num, imm);
+                } else {
+                    bprintf("cnt=%d, r%u", imm, reg_num);
+                }
             } else {
-                bprintf("r%u, [r%u]", reg_num, reg_num ^ 1);
+                if (signed_imm > 0) {
+                    bprintf("r%u, [r%u+%d]", reg_num, reg_num ^ 1, signed_imm);
+                } else if (signed_imm < 0) {
+                    bprintf("r%u, [r%u-%d]", reg_num, reg_num ^ 1, -signed_imm);
+                } else {
+                    bprintf("r%u, [r%u]", reg_num, reg_num ^ 1);
+                }
             }
             break;
         case WRITE_OPCODE: {