diff --git a/Userland/Utilities/disasm.cpp b/Userland/Utilities/disasm.cpp index 93ecd74845..63d214b1bf 100644 --- a/Userland/Utilities/disasm.cpp +++ b/Userland/Utilities/disasm.cpp @@ -130,7 +130,26 @@ ErrorOr serenity_main(Main::Arguments args) is_first_symbol = false; } - outln("{:p} {}", virtual_offset, insn.value().to_string(virtual_offset, symbol_provider)); + size_t length = insn.value().length(); + StringBuilder builder; + builder.appendff("{: 8x}:\t", virtual_offset); + for (size_t i = 0; i < 7; i++) { + if (i < length) + builder.appendff("{:02x} ", asm_data[offset + i]); + else + builder.append(" "sv); + } + builder.append("\t"sv); + builder.append(insn.value().to_string(virtual_offset, symbol_provider)); + outln("{}", builder.string_view()); + + for (size_t bytes_printed = 7; bytes_printed < length; bytes_printed += 7) { + builder.clear(); + builder.appendff("{:p} ", virtual_offset + bytes_printed); + for (size_t i = bytes_printed; i < bytes_printed + 7 && i < length; i++) + builder.appendff(" {:02x}", asm_data[offset + i]); + outln("{}", builder.string_view()); + } } return 0; }