v5: add disassembler support for JEBS_OPCODE

Test: TH
Change-Id: I45fcf7d9efc309e43f71a9a5a2bb85bc2a1cbefe
diff --git a/disassembler.c b/disassembler.c
index 228bce0..cda64f7 100644
--- a/disassembler.c
+++ b/disassembler.c
@@ -170,8 +170,7 @@
         case JNE_OPCODE:
         case JGT_OPCODE:
         case JLT_OPCODE:
-        case JSET_OPCODE:
-        case JNEBS_OPCODE: {
+        case JSET_OPCODE: {
             PRINT_OPCODE();
             bprintf("r0, ");
             // Load second immediate field.
@@ -184,15 +183,24 @@
                 DECODE_IMM(cmp_imm, 1 << (len_field - 1));
                 bprintf("0x%x, ", cmp_imm);
             }
-            if (opcode == JNEBS_OPCODE) {
-                print_jump_target(*pc + imm + cmp_imm, program_len);
-                bprintf(", ");
-                while (cmp_imm--) {
-                    uint8_t byte = program[(*pc)++];
-                    bprintf("%02x", byte);
-                }
+            print_jump_target(*pc + imm, program_len);
+            break;
+        }
+        case JNEBS_OPCODE: {
+            if (reg_num == 0) {
+                PRINT_OPCODE();
             } else {
-                print_jump_target(*pc + imm, program_len);
+                print_opcode("jebs");
+            }
+            bprintf("r0, ");
+            uint32_t cmp_imm = 0;
+            DECODE_IMM(cmp_imm, 1 << (len_field - 1));
+            bprintf("0x%x, ", cmp_imm);
+            print_jump_target(*pc + imm + cmp_imm, program_len);
+            bprintf(", ");
+            while (cmp_imm--) {
+                uint8_t byte = program[(*pc)++];
+                bprintf("%02x", byte);
             }
             break;
         }