From 6319449cbd0e3103ccbfbfe85e3153c4ce8c2e25 Mon Sep 17 00:00:00 2001 From: WerWolv Date: Mon, 24 Jan 2022 23:56:02 +0100 Subject: [PATCH] sys: Added RISC-V, M68K, M680X, Webassembly, MOS65XX and BPF architecture to disassembler --- .../content/views/view_disassembler.hpp | 8 +- .../content/views/view_disassembler.cpp | 295 +++++++++++------- plugins/builtin/source/lang/de_DE.cpp | 64 +++- plugins/builtin/source/lang/en_US.cpp | 65 +++- plugins/builtin/source/lang/it_IT.cpp | 63 +++- plugins/builtin/source/lang/zh_CN.cpp | 46 ++- 6 files changed, 363 insertions(+), 178 deletions(-) diff --git a/plugins/builtin/include/content/views/view_disassembler.hpp b/plugins/builtin/include/content/views/view_disassembler.hpp index ef1cb9ae4..4ee5d3e40 100644 --- a/plugins/builtin/include/content/views/view_disassembler.hpp +++ b/plugins/builtin/include/content/views/view_disassembler.hpp @@ -38,13 +38,7 @@ namespace hex::plugin::builtin { bool m_shouldMatchSelection = false; Architecture m_architecture = Architecture::ARM; - cs_mode m_modeBasicARM = cs_mode(0); - cs_mode m_modeExtraARM = cs_mode(0); - cs_mode m_modeBasicMIPS = cs_mode(0); - cs_mode m_modeBasicPPC = cs_mode(0); - cs_mode m_modeBasicX86 = cs_mode(0); - - bool m_littleEndianMode = true, m_micoMode = false, m_sparcV9Mode = false; + cs_mode m_mode = cs_mode(0); std::vector m_disassembly; diff --git a/plugins/builtin/source/content/views/view_disassembler.cpp b/plugins/builtin/source/content/views/view_disassembler.cpp index 6a53a58fd..1ae4e8fa1 100644 --- a/plugins/builtin/source/content/views/view_disassembler.cpp +++ b/plugins/builtin/source/content/views/view_disassembler.cpp @@ -45,18 +45,7 @@ namespace hex::plugin::builtin { csh capstoneHandle; cs_insn *instructions = nullptr; - cs_mode mode = cs_mode(this->m_modeBasicARM | this->m_modeExtraARM | this->m_modeBasicMIPS | this->m_modeBasicX86 | this->m_modeBasicPPC); - - if (this->m_littleEndianMode) - mode = cs_mode(mode | CS_MODE_LITTLE_ENDIAN); - else - mode = cs_mode(mode | CS_MODE_BIG_ENDIAN); - - if (this->m_micoMode) - mode = cs_mode(mode | CS_MODE_MICRO); - - if (this->m_sparcV9Mode) - mode = cs_mode(mode | CS_MODE_V9); + cs_mode mode = this->m_mode; if (cs_open(Disassembler::toCapstoneArchictecture(this->m_architecture), mode, &capstoneHandle) == CS_ERR_OK) { @@ -74,26 +63,28 @@ namespace hex::plugin::builtin { provider->read(this->m_codeRegion[0] + address, buffer.data(), bufferSize); size_t instructionCount = cs_disasm(capstoneHandle, buffer.data(), bufferSize, this->m_baseAddress + address, 0, &instructions); - if (instructionCount == 0) break; - u64 usedBytes = 0; - for (u32 instr = 0; instr < instructionCount; instr++) { - Disassembly disassembly = { 0 }; - disassembly.address = instructions[instr].address; - disassembly.offset = this->m_codeRegion[0] + address + usedBytes; - disassembly.size = instructions[instr].size; - disassembly.mnemonic = instructions[instr].mnemonic; - disassembly.operators = instructions[instr].op_str; + this->m_disassembly.reserve(this->m_disassembly.size() + instructionCount); - for (u16 i = 0; i < instructions[instr].size; i++) - disassembly.bytes += hex::format("{0:02X} ", instructions[instr].bytes[i]); + u64 usedBytes = 0; + for (u32 i = 0; i < instructionCount; i++) { + const auto &instr = instructions[i]; + Disassembly disassembly = { 0 }; + disassembly.address = instr.address; + disassembly.offset = this->m_codeRegion[0] + address + usedBytes; + disassembly.size = instr.size; + disassembly.mnemonic = instr.mnemonic; + disassembly.operators = instr.op_str; + + for (u16 j = 0; j < instr.size; j++) + disassembly.bytes += hex::format("{0:02X} ", instr.bytes[j]); disassembly.bytes.pop_back(); this->m_disassembly.push_back(disassembly); - usedBytes += instructions[instr].size; + usedBytes += instr.size; } if (instructionCount < bufferSize) @@ -131,127 +122,191 @@ namespace hex::plugin::builtin { ImGui::TextUnformatted("hex.builtin.view.disassembler.settings.header"_lang); ImGui::Separator(); - ImGui::Combo("hex.builtin.view.disassembler.arch"_lang, reinterpret_cast(&this->m_architecture), Disassembler::ArchitectureNames, Disassembler::getArchitectureSupportedCount()); + if (ImGui::Combo("hex.builtin.view.disassembler.arch"_lang, reinterpret_cast(&this->m_architecture), Disassembler::ArchitectureNames, Disassembler::getArchitectureSupportedCount())) + this->m_mode = cs_mode(0); if (ImGui::BeginChild("modes", ImVec2(0, ImGui::GetTextLineHeightWithSpacing() * 6), true, ImGuiWindowFlags_AlwaysAutoResize)) { - if (ImGui::RadioButton("hex.common.little_endian"_lang, this->m_littleEndianMode)) - this->m_littleEndianMode = true; + static int littleEndian = true; + ImGui::RadioButton("hex.common.little_endian"_lang, &littleEndian, true); ImGui::SameLine(); - if (ImGui::RadioButton("hex.common.big_endian"_lang, !this->m_littleEndianMode)) - this->m_littleEndianMode = false; + ImGui::RadioButton("hex.common.big_endian"_lang, &littleEndian, false); ImGui::NewLine(); switch (this->m_architecture) { - case Architecture::ARM: - this->m_modeBasicMIPS = cs_mode(0); - this->m_modeBasicX86 = cs_mode(0); - this->m_modeBasicPPC = cs_mode(0); - this->m_micoMode = false; - this->m_sparcV9Mode = false; + case Architecture::ARM: { + static int mode = CS_MODE_ARM; + ImGui::RadioButton("hex.builtin.view.disassembler.arm.arm"_lang, &mode, CS_MODE_ARM); + ImGui::SameLine(); + ImGui::RadioButton("hex.builtin.view.disassembler.arm.thumb"_lang, &mode, CS_MODE_THUMB); - if (this->m_modeBasicARM == cs_mode(0)) - this->m_modeBasicARM = CS_MODE_ARM; + static int extraMode = 0; + ImGui::RadioButton("hex.builtin.view.disassembler.arm.default"_lang, &extraMode, 0); + ImGui::SameLine(); + ImGui::RadioButton("hex.builtin.view.disassembler.arm.cortex_m"_lang, &extraMode, CS_MODE_MCLASS); + ImGui::SameLine(); + ImGui::RadioButton("hex.builtin.view.disassembler.arm.armv8"_lang, &extraMode, CS_MODE_V8); - if (ImGui::RadioButton("hex.builtin.view.disassembler.arm.arm"_lang, this->m_modeBasicARM == CS_MODE_ARM)) - this->m_modeBasicARM = CS_MODE_ARM; - ImGui::SameLine(); - if (ImGui::RadioButton("hex.builtin.view.disassembler.arm.thumb"_lang, this->m_modeBasicARM == CS_MODE_THUMB)) - this->m_modeBasicARM = CS_MODE_THUMB; - - if (ImGui::RadioButton("hex.builtin.view.disassembler.arm.default"_lang, (this->m_modeExtraARM & (CS_MODE_MCLASS | CS_MODE_V8)) == 0)) - this->m_modeExtraARM = cs_mode(0); - ImGui::SameLine(); - if (ImGui::RadioButton("hex.builtin.view.disassembler.arm.cortex_m"_lang, (this->m_modeExtraARM & (CS_MODE_MCLASS | CS_MODE_V8)) == CS_MODE_MCLASS)) - this->m_modeExtraARM = CS_MODE_MCLASS; - ImGui::SameLine(); - if (ImGui::RadioButton("hex.builtin.view.disassembler.arm.armv8"_lang, (this->m_modeExtraARM & (CS_MODE_MCLASS | CS_MODE_V8)) == CS_MODE_V8)) - this->m_modeExtraARM = CS_MODE_V8; + this->m_mode = cs_mode(mode | extraMode); + } break; - case Architecture::MIPS: - this->m_modeBasicARM = cs_mode(0); - this->m_modeExtraARM = cs_mode(0); - this->m_modeBasicX86 = cs_mode(0); - this->m_modeBasicPPC = cs_mode(0); - this->m_sparcV9Mode = false; + case Architecture::MIPS: { + static int mode = CS_MODE_MIPS32; + ImGui::RadioButton("hex.builtin.view.disassembler.mips.mips32"_lang, &mode, CS_MODE_MIPS32); + ImGui::SameLine(); + ImGui::RadioButton("hex.builtin.view.disassembler.mips.mips64"_lang, &mode, CS_MODE_MIPS64); + ImGui::SameLine(); + ImGui::RadioButton("hex.builtin.view.disassembler.mips.mips32R6"_lang, &mode, CS_MODE_MIPS32R6); - if (this->m_modeBasicMIPS == cs_mode(0)) - this->m_modeBasicMIPS = CS_MODE_MIPS32; + ImGui::RadioButton("hex.builtin.view.disassembler.mips.mips2"_lang, &mode, CS_MODE_MIPS2); + ImGui::SameLine(); + ImGui::RadioButton("hex.builtin.view.disassembler.mips.mips3"_lang, &mode, CS_MODE_MIPS3); - if (ImGui::RadioButton("hex.builtin.view.disassembler.mips.mips32"_lang, this->m_modeBasicMIPS == CS_MODE_MIPS32)) - this->m_modeBasicMIPS = CS_MODE_MIPS32; - ImGui::SameLine(); - if (ImGui::RadioButton("hex.builtin.view.disassembler.mips.mips64"_lang, this->m_modeBasicMIPS == CS_MODE_MIPS64)) - this->m_modeBasicMIPS = CS_MODE_MIPS64; - ImGui::SameLine(); - if (ImGui::RadioButton("hex.builtin.view.disassembler.mips.mips32R6"_lang, this->m_modeBasicMIPS == CS_MODE_MIPS32R6)) - this->m_modeBasicMIPS = CS_MODE_MIPS32R6; + static bool microMode; + ImGui::Checkbox("hex.builtin.view.disassembler.mips.micro"_lang, µMode); - ImGui::Checkbox("hex.builtin.view.disassembler.mips.micro"_lang, &this->m_micoMode); + this->m_mode = cs_mode(mode | (microMode ? CS_MODE_MICRO : 0)); + } break; - case Architecture::X86: - this->m_modeBasicARM = cs_mode(0); - this->m_modeExtraARM = cs_mode(0); - this->m_modeBasicMIPS = cs_mode(0); - this->m_modeBasicPPC = cs_mode(0); - this->m_micoMode = false; - this->m_sparcV9Mode = false; + case Architecture::X86: { + static int mode = CS_MODE_32; + ImGui::RadioButton("hex.builtin.view.disassembler.16bit"_lang, &mode, CS_MODE_16); + ImGui::SameLine(); + ImGui::RadioButton("hex.builtin.view.disassembler.32bit"_lang, &mode, CS_MODE_32); + ImGui::SameLine(); + ImGui::RadioButton("hex.builtin.view.disassembler.64bit"_lang, &mode, CS_MODE_64); - if (this->m_modeBasicX86 == cs_mode(0)) - this->m_modeBasicX86 = CS_MODE_16; - - if (ImGui::RadioButton("hex.builtin.view.disassembler.x86.16bit"_lang, this->m_modeBasicX86 == CS_MODE_16)) - this->m_modeBasicX86 = CS_MODE_16; - ImGui::SameLine(); - if (ImGui::RadioButton("hex.builtin.view.disassembler.x86.32bit"_lang, this->m_modeBasicX86 == CS_MODE_32)) - this->m_modeBasicX86 = CS_MODE_32; - ImGui::SameLine(); - if (ImGui::RadioButton("hex.builtin.view.disassembler.x86.64bit"_lang, this->m_modeBasicX86 == CS_MODE_64)) - this->m_modeBasicX86 = CS_MODE_64; + this->m_mode = cs_mode(mode); + } break; - case Architecture::PPC: - this->m_modeBasicARM = cs_mode(0); - this->m_modeExtraARM = cs_mode(0); - this->m_modeBasicMIPS = cs_mode(0); - this->m_modeBasicX86 = cs_mode(0); - this->m_micoMode = false; - this->m_sparcV9Mode = false; + case Architecture::PPC: { + static int mode = CS_MODE_32; + ImGui::RadioButton("hex.builtin.view.disassembler.32bit"_lang, &mode, CS_MODE_32); + ImGui::SameLine(); + ImGui::RadioButton("hex.builtin.view.disassembler.64bit"_lang, &mode, CS_MODE_64); - if (m_modeBasicPPC == cs_mode(0)) - this->m_modeBasicPPC = CS_MODE_32; + static bool qpx = false; + ImGui::Checkbox("hex.builtin.view.disassembler.ppc.qpx"_lang, &qpx); + static bool spe = false; + ImGui::Checkbox("hex.builtin.view.disassembler.ppc.spe"_lang, &spe); + static bool booke = false; + ImGui::Checkbox("hex.builtin.view.disassembler.ppc.booke"_lang, &booke); - if (ImGui::RadioButton("hex.builtin.view.disassembler.ppc.32bit"_lang, this->m_modeBasicPPC == CS_MODE_32)) - this->m_modeBasicPPC = CS_MODE_32; - ImGui::SameLine(); - if (ImGui::RadioButton("hex.builtin.view.disassembler.ppc.64bit"_lang, this->m_modeBasicPPC == CS_MODE_64)) - this->m_modeBasicPPC = CS_MODE_64; + this->m_mode = cs_mode(mode | (qpx ? CS_MODE_QPX : 0) | (spe ? CS_MODE_SPE : 0) | (booke ? CS_MODE_BOOKE : 0)); + } break; - case Architecture::SPARC: - this->m_modeBasicARM = cs_mode(0); - this->m_modeExtraARM = cs_mode(0); - this->m_modeBasicMIPS = cs_mode(0); - this->m_modeBasicX86 = cs_mode(0); - this->m_modeBasicPPC = cs_mode(0); - this->m_micoMode = false; + case Architecture::SPARC: { + static bool v9Mode = false; + ImGui::Checkbox("hex.builtin.view.disassembler.sparc.v9"_lang, &v9Mode); - ImGui::Checkbox("hex.builtin.view.disassembler.sparc.v9"_lang, &this->m_sparcV9Mode); + this->m_mode = cs_mode(v9Mode ? CS_MODE_V9 : 0); + } break; + case Architecture::RISCV: { + static int mode = CS_MODE_RISCV32; + ImGui::RadioButton("hex.builtin.view.disassembler.32bit"_lang, &mode, CS_MODE_RISCV32); + ImGui::SameLine(); + ImGui::RadioButton("hex.builtin.view.disassembler.64bit"_lang, &mode, CS_MODE_RISCV64); + + static bool compressed = false; + ImGui::Checkbox("hex.builtin.view.disassembler.riscv.compressed"_lang, &compressed); + + this->m_mode = cs_mode(mode | (compressed ? CS_MODE_RISCVC : 0)); + } + break; + case Architecture::M68K: { + static int selectedMode = 0; + + std::pair modes[] = { + { "hex.builtin.view.disassembler.m68k.000"_lang, CS_MODE_M68K_000 }, + { "hex.builtin.view.disassembler.m68k.010"_lang, CS_MODE_M68K_010 }, + { "hex.builtin.view.disassembler.m68k.020"_lang, CS_MODE_M68K_020 }, + { "hex.builtin.view.disassembler.m68k.030"_lang, CS_MODE_M68K_030 }, + { "hex.builtin.view.disassembler.m68k.040"_lang, CS_MODE_M68K_040 }, + { "hex.builtin.view.disassembler.m68k.060"_lang, CS_MODE_M68K_060 }, + }; + + if (ImGui::BeginCombo("hex.builtin.view.disassembler.settings.mode"_lang, modes[selectedMode].first)) { + for (u32 i = 0; i < IM_ARRAYSIZE(modes); i++) { + if (ImGui::Selectable(modes[i].first)) + selectedMode = i; + } + ImGui::EndCombo(); + } + + this->m_mode = cs_mode(modes[selectedMode].second); + } + break; + case Architecture::M680X: { + static int selectedMode = 0; + + std::pair modes[] = { + { "hex.builtin.view.disassembler.m680x.6301"_lang, CS_MODE_M680X_6301 }, + { "hex.builtin.view.disassembler.m680x.6309"_lang, CS_MODE_M680X_6309 }, + { "hex.builtin.view.disassembler.m680x.6800"_lang, CS_MODE_M680X_6800 }, + { "hex.builtin.view.disassembler.m680x.6801"_lang, CS_MODE_M680X_6801 }, + { "hex.builtin.view.disassembler.m680x.6805"_lang, CS_MODE_M680X_6805 }, + { "hex.builtin.view.disassembler.m680x.6808"_lang, CS_MODE_M680X_6808 }, + { "hex.builtin.view.disassembler.m680x.6809"_lang, CS_MODE_M680X_6809 }, + { "hex.builtin.view.disassembler.m680x.6811"_lang, CS_MODE_M680X_6811 }, + { "hex.builtin.view.disassembler.m680x.cpu12"_lang, CS_MODE_M680X_CPU12 }, + { "hex.builtin.view.disassembler.m680x.hcs08"_lang, CS_MODE_M680X_HCS08 }, + }; + + if (ImGui::BeginCombo("hex.builtin.view.disassembler.settings.mode"_lang, modes[selectedMode].first)) { + for (u32 i = 0; i < IM_ARRAYSIZE(modes); i++) { + if (ImGui::Selectable(modes[i].first)) + selectedMode = i; + } + ImGui::EndCombo(); + } + + this->m_mode = cs_mode(modes[selectedMode].second); + } + break; + case Architecture::MOS65XX: { + static int selectedMode = 0; + + std::pair modes[] = { + { "hex.builtin.view.disassembler.mos65xx.6502"_lang, CS_MODE_MOS65XX_6502 }, + { "hex.builtin.view.disassembler.mos65xx.65c02"_lang, CS_MODE_MOS65XX_65C02 }, + { "hex.builtin.view.disassembler.mos65xx.w65c02"_lang, CS_MODE_MOS65XX_W65C02 }, + { "hex.builtin.view.disassembler.mos65xx.65816"_lang, CS_MODE_MOS65XX_65816 }, + { "hex.builtin.view.disassembler.mos65xx.65816_long_m"_lang, CS_MODE_MOS65XX_65816_LONG_M }, + { "hex.builtin.view.disassembler.mos65xx.65816_long_x"_lang, CS_MODE_MOS65XX_65816_LONG_X }, + { "hex.builtin.view.disassembler.mos65xx.65816_long_mx"_lang, CS_MODE_MOS65XX_65816_LONG_MX }, + }; + + if (ImGui::BeginCombo("hex.builtin.view.disassembler.settings.mode"_lang, modes[selectedMode].first)) { + for (u32 i = 0; i < IM_ARRAYSIZE(modes); i++) { + if (ImGui::Selectable(modes[i].first)) + selectedMode = i; + } + ImGui::EndCombo(); + } + + this->m_mode = cs_mode(modes[selectedMode].second); + } + break; + case Architecture::BPF: { + static int mode = CS_MODE_BPF_CLASSIC; + ImGui::RadioButton("hex.builtin.view.disassembler.bpf.classic"_lang, &mode, CS_MODE_BPF_CLASSIC); + ImGui::SameLine(); + ImGui::RadioButton("hex.builtin.view.disassembler.bpf.extended"_lang, &mode, CS_MODE_BPF_EXTENDED); + + this->m_mode = cs_mode(mode); + } + break; + case Architecture::EVM: + case Architecture::TMS320C64X: case Architecture::ARM64: case Architecture::SYSZ: case Architecture::XCORE: - case Architecture::M68K: - case Architecture::TMS320C64X: - case Architecture::M680X: - case Architecture::EVM: - this->m_modeBasicARM = cs_mode(0); - this->m_modeExtraARM = cs_mode(0); - this->m_modeBasicMIPS = cs_mode(0); - this->m_modeBasicX86 = cs_mode(0); - this->m_modeBasicPPC = cs_mode(0); - this->m_micoMode = false; - this->m_sparcV9Mode = false; + case Architecture::WASM: + case Architecture::MAX: + this->m_mode = cs_mode(0); break; } } @@ -273,7 +328,7 @@ namespace hex::plugin::builtin { ImGui::TextUnformatted("hex.builtin.view.disassembler.disassembly.title"_lang); ImGui::Separator(); - if (ImGui::BeginTable("##disassembly", 4, ImGuiTableFlags_ScrollY | ImGuiTableFlags_Borders | ImGuiTableFlags_Resizable | ImGuiTableFlags_RowBg | ImGuiTableFlags_Reorderable)) { + if (ImGui::BeginTable("##disassembly", 4, ImGuiTableFlags_ScrollY | ImGuiTableFlags_Borders | ImGuiTableFlags_Resizable | ImGuiTableFlags_RowBg | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable)) { ImGui::TableSetupScrollFreeze(0, 1); ImGui::TableSetupColumn("hex.builtin.view.disassembler.disassembly.address"_lang); ImGui::TableSetupColumn("hex.builtin.view.disassembler.disassembly.offset"_lang); diff --git a/plugins/builtin/source/lang/de_DE.cpp b/plugins/builtin/source/lang/de_DE.cpp index b4091b276..8322f02e7 100644 --- a/plugins/builtin/source/lang/de_DE.cpp +++ b/plugins/builtin/source/lang/de_DE.cpp @@ -125,25 +125,59 @@ namespace hex::plugin::builtin { { "hex.builtin.view.disassembler.region", "Code Region" }, { "hex.builtin.view.disassembler.settings.header", "Einstellungen" }, { "hex.builtin.view.disassembler.arch", "Architektur" }, - { "hex.builtin.view.disassembler.arm.arm", "ARM Modus" }, - { "hex.builtin.view.disassembler.arm.thumb", "Thumb Modus" }, - { "hex.builtin.view.disassembler.arm.default", "Standard Modus" }, - { "hex.builtin.view.disassembler.arm.cortex_m", "Cortex-M Modus" }, - { "hex.builtin.view.disassembler.arm.armv8", "ARMv8 Modus" }, + { "hex.builtin.view.disassembler.16bit", "16-bit" }, + { "hex.builtin.view.disassembler.32bit", "32-bit" }, + { "hex.builtin.view.disassembler.64bit", "64-bit" }, - { "hex.builtin.view.disassembler.mips.mips32", "MIPS32 Modus" }, - { "hex.builtin.view.disassembler.mips.mips64", "MIPS64 Modus" }, - { "hex.builtin.view.disassembler.mips.mips32R6", "MIPS32R6 Modus" }, - { "hex.builtin.view.disassembler.mips.micro", "Micro Modus" }, + { "hex.builtin.view.disassembler.arm.arm", "ARM" }, + { "hex.builtin.view.disassembler.arm.thumb", "Thumb" }, + { "hex.builtin.view.disassembler.arm.default", "Standard" }, + { "hex.builtin.view.disassembler.arm.cortex_m", "Cortex-M" }, + { "hex.builtin.view.disassembler.arm.armv8", "ARMv8" }, - { "hex.builtin.view.disassembler.x86.16bit", "16-bit Modus" }, - { "hex.builtin.view.disassembler.x86.32bit", "32-bit Modus" }, - { "hex.builtin.view.disassembler.x86.64bit", "64-bit Modus" }, + { "hex.builtin.view.disassembler.mips.mips32", "MIPS32" }, + { "hex.builtin.view.disassembler.mips.mips64", "MIPS64" }, + { "hex.builtin.view.disassembler.mips.mips32R6", "MIPS32R6" }, + { "hex.builtin.view.disassembler.mips.mips2", "MIPS II" }, + { "hex.builtin.view.disassembler.mips.mips3", "MIPS III" }, + { "hex.builtin.view.disassembler.mips.micro", "Micro" }, - { "hex.builtin.view.disassembler.ppc.32bit", "32-bit Modus" }, - { "hex.builtin.view.disassembler.ppc.64bit", "64-bit Modus" }, + { "hex.builtin.view.disassembler.ppc.qpx", "Quad Processing Extensions" }, + { "hex.builtin.view.disassembler.ppc.spe", "Signal Processing Engine" }, + { "hex.builtin.view.disassembler.ppc.booke", "Book-E" }, - { "hex.builtin.view.disassembler.sparc.v9", "Sparc V9 Modus" }, + { "hex.builtin.view.disassembler.sparc.v9", "Sparc V9" }, + + { "hex.builtin.view.disassembler.riscv.compressed", "Komprimiert" }, + + { "hex.builtin.view.disassembler.m68k.000", "000" }, + { "hex.builtin.view.disassembler.m68k.010", "010" }, + { "hex.builtin.view.disassembler.m68k.020", "020" }, + { "hex.builtin.view.disassembler.m68k.030", "030" }, + { "hex.builtin.view.disassembler.m68k.040", "040" }, + { "hex.builtin.view.disassembler.m68k.060", "060" }, + + { "hex.builtin.view.disassembler.m680x.6301", "6301" }, + { "hex.builtin.view.disassembler.m680x.6309", "6309" }, + { "hex.builtin.view.disassembler.m680x.6800", "6800" }, + { "hex.builtin.view.disassembler.m680x.6801", "6801" }, + { "hex.builtin.view.disassembler.m680x.6805", "6805" }, + { "hex.builtin.view.disassembler.m680x.6808", "6808" }, + { "hex.builtin.view.disassembler.m680x.6809", "6809" }, + { "hex.builtin.view.disassembler.m680x.6811", "6811" }, + { "hex.builtin.view.disassembler.m680x.cpu12", "CPU12" }, + { "hex.builtin.view.disassembler.m680x.hcs08", "HCS08" }, + + { "hex.builtin.view.disassembler.mos65xx.6502", "6502" }, + { "hex.builtin.view.disassembler.mos65xx.65c02", "65C02" }, + { "hex.builtin.view.disassembler.mos65xx.w65c02", "W65C02" }, + { "hex.builtin.view.disassembler.mos65xx.65816", "65816" }, + { "hex.builtin.view.disassembler.mos65xx.65816_long_m", "65816 Long M" }, + { "hex.builtin.view.disassembler.mos65xx.65816_long_x", "65816 Long X" }, + { "hex.builtin.view.disassembler.mos65xx.65816_long_mx", "65816 Long MX" }, + + { "hex.builtin.view.disassembler.bpf.classic", "Classic" }, + { "hex.builtin.view.disassembler.bpf.extended", "Extended" }, { "hex.builtin.view.disassembler.disassemble", "Disassemble" }, { "hex.builtin.view.disassembler.disassembling", "Disassemblen..." }, diff --git a/plugins/builtin/source/lang/en_US.cpp b/plugins/builtin/source/lang/en_US.cpp index 006cac2c6..abf4a47ad 100644 --- a/plugins/builtin/source/lang/en_US.cpp +++ b/plugins/builtin/source/lang/en_US.cpp @@ -124,26 +124,61 @@ namespace hex::plugin::builtin { { "hex.builtin.view.disassembler.base", "Base address" }, { "hex.builtin.view.disassembler.region", "Code region" }, { "hex.builtin.view.disassembler.settings.header", "Settings" }, + { "hex.builtin.view.disassembler.settings.mode", "Mode" }, { "hex.builtin.view.disassembler.arch", "Architecture" }, - { "hex.builtin.view.disassembler.arm.arm", "ARM mode" }, - { "hex.builtin.view.disassembler.arm.thumb", "Thumb mode" }, - { "hex.builtin.view.disassembler.arm.default", "Default mode" }, - { "hex.builtin.view.disassembler.arm.cortex_m", "Cortex-M mode" }, - { "hex.builtin.view.disassembler.arm.armv8", "ARMv8 mode" }, + { "hex.builtin.view.disassembler.16bit", "16-bit" }, + { "hex.builtin.view.disassembler.32bit", "32-bit" }, + { "hex.builtin.view.disassembler.64bit", "64-bit" }, - { "hex.builtin.view.disassembler.mips.mips32", "MIPS32 mode" }, - { "hex.builtin.view.disassembler.mips.mips64", "MIPS64 mode" }, - { "hex.builtin.view.disassembler.mips.mips32R6", "MIPS32R6 mode" }, - { "hex.builtin.view.disassembler.mips.micro", "Micro mode" }, + { "hex.builtin.view.disassembler.arm.arm", "ARM" }, + { "hex.builtin.view.disassembler.arm.thumb", "Thumb" }, + { "hex.builtin.view.disassembler.arm.default", "Default" }, + { "hex.builtin.view.disassembler.arm.cortex_m", "Cortex-M" }, + { "hex.builtin.view.disassembler.arm.armv8", "ARMv8" }, - { "hex.builtin.view.disassembler.x86.16bit", "16-bit mode" }, - { "hex.builtin.view.disassembler.x86.32bit", "32-bit mode" }, - { "hex.builtin.view.disassembler.x86.64bit", "64-bit mode" }, + { "hex.builtin.view.disassembler.mips.mips32", "MIPS32" }, + { "hex.builtin.view.disassembler.mips.mips64", "MIPS64" }, + { "hex.builtin.view.disassembler.mips.mips32R6", "MIPS32R6" }, + { "hex.builtin.view.disassembler.mips.mips2", "MIPS II" }, + { "hex.builtin.view.disassembler.mips.mips3", "MIPS III" }, + { "hex.builtin.view.disassembler.mips.micro", "Micro" }, - { "hex.builtin.view.disassembler.ppc.32bit", "32-bit mode" }, - { "hex.builtin.view.disassembler.ppc.64bit", "64-bit mode" }, + { "hex.builtin.view.disassembler.ppc.qpx", "Quad Processing Extensions" }, + { "hex.builtin.view.disassembler.ppc.spe", "Signal Processing Engine" }, + { "hex.builtin.view.disassembler.ppc.booke", "Book-E" }, - { "hex.builtin.view.disassembler.sparc.v9", "Sparc V9 mode" }, + { "hex.builtin.view.disassembler.sparc.v9", "Sparc V9" }, + + { "hex.builtin.view.disassembler.riscv.compressed", "Compressed" }, + + { "hex.builtin.view.disassembler.m68k.000", "000" }, + { "hex.builtin.view.disassembler.m68k.010", "010" }, + { "hex.builtin.view.disassembler.m68k.020", "020" }, + { "hex.builtin.view.disassembler.m68k.030", "030" }, + { "hex.builtin.view.disassembler.m68k.040", "040" }, + { "hex.builtin.view.disassembler.m68k.060", "060" }, + + { "hex.builtin.view.disassembler.m680x.6301", "6301" }, + { "hex.builtin.view.disassembler.m680x.6309", "6309" }, + { "hex.builtin.view.disassembler.m680x.6800", "6800" }, + { "hex.builtin.view.disassembler.m680x.6801", "6801" }, + { "hex.builtin.view.disassembler.m680x.6805", "6805" }, + { "hex.builtin.view.disassembler.m680x.6808", "6808" }, + { "hex.builtin.view.disassembler.m680x.6809", "6809" }, + { "hex.builtin.view.disassembler.m680x.6811", "6811" }, + { "hex.builtin.view.disassembler.m680x.cpu12", "CPU12" }, + { "hex.builtin.view.disassembler.m680x.hcs08", "HCS08" }, + + { "hex.builtin.view.disassembler.mos65xx.6502", "6502" }, + { "hex.builtin.view.disassembler.mos65xx.65c02", "65C02" }, + { "hex.builtin.view.disassembler.mos65xx.w65c02", "W65C02" }, + { "hex.builtin.view.disassembler.mos65xx.65816", "65816" }, + { "hex.builtin.view.disassembler.mos65xx.65816_long_m", "65816 Long M" }, + { "hex.builtin.view.disassembler.mos65xx.65816_long_x", "65816 Long X" }, + { "hex.builtin.view.disassembler.mos65xx.65816_long_mx", "65816 Long MX" }, + + { "hex.builtin.view.disassembler.bpf.classic", "Classic" }, + { "hex.builtin.view.disassembler.bpf.extended", "Extended" }, { "hex.builtin.view.disassembler.disassemble", "Disassemble" }, { "hex.builtin.view.disassembler.disassembling", "Disassembling..." }, diff --git a/plugins/builtin/source/lang/it_IT.cpp b/plugins/builtin/source/lang/it_IT.cpp index 080d62792..6278fa065 100644 --- a/plugins/builtin/source/lang/it_IT.cpp +++ b/plugins/builtin/source/lang/it_IT.cpp @@ -124,26 +124,59 @@ namespace hex::plugin::builtin { { "hex.builtin.view.disassembler.region", "Regione del Codice" }, { "hex.builtin.view.disassembler.settings.header", "Impostazioni" }, { "hex.builtin.view.disassembler.arch", "Architettura" }, - { "hex.builtin.view.disassembler.arm.arm", "Modalità ARM" }, - { "hex.builtin.view.disassembler.arm.thumb", "Modalità Thumb" }, - { "hex.builtin.view.disassembler.arm.default", "Modalità di Default" }, - { "hex.builtin.view.disassembler.arm.cortex_m", "Modalità Cortex-M" }, - { "hex.builtin.view.disassembler.arm.armv8", "Modalità ARMv8" }, + { "hex.builtin.view.disassembler.16bit", "16-bit" }, + { "hex.builtin.view.disassembler.32bit", "32-bit" }, + { "hex.builtin.view.disassembler.64bit", "64-bit" }, - { "hex.builtin.view.disassembler.mips.mips32", "Modalità MIPS32" }, - { "hex.builtin.view.disassembler.mips.mips64", "Modalità MIPS64" }, - { "hex.builtin.view.disassembler.mips.mips32R6", "Modalità MIPS32R6" }, - { "hex.builtin.view.disassembler.mips.micro", "Modalità Micro" }, + { "hex.builtin.view.disassembler.arm.arm", "ARM" }, + { "hex.builtin.view.disassembler.arm.thumb", "Thumb" }, + { "hex.builtin.view.disassembler.arm.default", "Default" }, + { "hex.builtin.view.disassembler.arm.cortex_m", "Cortex-M" }, + { "hex.builtin.view.disassembler.arm.armv8", "ARMv8" }, - { "hex.builtin.view.disassembler.x86.16bit", "Modalità 16-bit" }, - { "hex.builtin.view.disassembler.x86.32bit", "Modalità 32-bit" }, - { "hex.builtin.view.disassembler.x86.64bit", "Modalità 64-bit" }, + { "hex.builtin.view.disassembler.mips.mips32", "MIPS32" }, + { "hex.builtin.view.disassembler.mips.mips64", "MIPS64" }, + { "hex.builtin.view.disassembler.mips.mips32R6", "MIPS32R6" }, + { "hex.builtin.view.disassembler.mips.mips2", "MIPS II" }, + { "hex.builtin.view.disassembler.mips.mips3", "MIPS III" }, + { "hex.builtin.view.disassembler.mips.micro", "Micro" }, - { "hex.builtin.view.disassembler.ppc.32bit", "Modalità 32-bit" }, - { "hex.builtin.view.disassembler.ppc.64bit", "Modalità 64-bit" }, + { "hex.builtin.view.disassembler.ppc.qpx", "Quad Processing Extensions" }, + { "hex.builtin.view.disassembler.ppc.spe", "Signal Processing Engine" }, + { "hex.builtin.view.disassembler.ppc.booke", "Book-E" }, - { "hex.builtin.view.disassembler.sparc.v9", "Modalità Sparc V9" }, + { "hex.builtin.view.disassembler.sparc.v9", "Sparc V9" }, + //{ "hex.builtin.view.disassembler.riscv.compressed", "Compressed" }, + + { "hex.builtin.view.disassembler.m68k.000", "000" }, + { "hex.builtin.view.disassembler.m68k.010", "010" }, + { "hex.builtin.view.disassembler.m68k.020", "020" }, + { "hex.builtin.view.disassembler.m68k.030", "030" }, + { "hex.builtin.view.disassembler.m68k.040", "040" }, + { "hex.builtin.view.disassembler.m68k.060", "060" }, + + { "hex.builtin.view.disassembler.m680x.6301", "6301" }, + { "hex.builtin.view.disassembler.m680x.6309", "6309" }, + { "hex.builtin.view.disassembler.m680x.6800", "6800" }, + { "hex.builtin.view.disassembler.m680x.6801", "6801" }, + { "hex.builtin.view.disassembler.m680x.6805", "6805" }, + { "hex.builtin.view.disassembler.m680x.6808", "6808" }, + { "hex.builtin.view.disassembler.m680x.6809", "6809" }, + { "hex.builtin.view.disassembler.m680x.6811", "6811" }, + { "hex.builtin.view.disassembler.m680x.cpu12", "CPU12" }, + { "hex.builtin.view.disassembler.m680x.hcs08", "HCS08" }, + + { "hex.builtin.view.disassembler.mos65xx.6502", "6502" }, + { "hex.builtin.view.disassembler.mos65xx.65c02", "65C02" }, + { "hex.builtin.view.disassembler.mos65xx.w65c02", "W65C02" }, + { "hex.builtin.view.disassembler.mos65xx.65816", "65816" }, + { "hex.builtin.view.disassembler.mos65xx.65816_long_m", "65816 Long M" }, + { "hex.builtin.view.disassembler.mos65xx.65816_long_x", "65816 Long X" }, + { "hex.builtin.view.disassembler.mos65xx.65816_long_mx", "65816 Long MX" }, + + //{ "hex.builtin.view.disassembler.bpf.classic", "Classic" }, + //{ "hex.builtin.view.disassembler.bpf.extended", "Extended" }, { "hex.builtin.view.disassembler.disassemble", "Disassembla" }, { "hex.builtin.view.disassembler.disassembling", "Disassemblaggio..." }, { "hex.builtin.view.disassembler.disassembly.title", "Disassembla" }, diff --git a/plugins/builtin/source/lang/zh_CN.cpp b/plugins/builtin/source/lang/zh_CN.cpp index eed07aa59..42cb619d9 100644 --- a/plugins/builtin/source/lang/zh_CN.cpp +++ b/plugins/builtin/source/lang/zh_CN.cpp @@ -124,6 +124,10 @@ namespace hex::plugin::builtin { { "hex.builtin.view.disassembler.region", "代码范围" }, { "hex.builtin.view.disassembler.settings.header", "设置" }, { "hex.builtin.view.disassembler.arch", "架构" }, + { "hex.builtin.view.disassembler.16bit", "16位" }, + { "hex.builtin.view.disassembler.32bit", "32位" }, + { "hex.builtin.view.disassembler.64bit", "64位" }, + { "hex.builtin.view.disassembler.arm.arm", "ARM" }, { "hex.builtin.view.disassembler.arm.thumb", "Thumb" }, { "hex.builtin.view.disassembler.arm.default", "默认" }, @@ -133,17 +137,47 @@ namespace hex::plugin::builtin { { "hex.builtin.view.disassembler.mips.mips32", "MIPS32" }, { "hex.builtin.view.disassembler.mips.mips64", "MIPS64" }, { "hex.builtin.view.disassembler.mips.mips32R6", "MIPS32R6" }, + { "hex.builtin.view.disassembler.mips.mips2", "MIPS II" }, + { "hex.builtin.view.disassembler.mips.mips3", "MIPS III" }, { "hex.builtin.view.disassembler.mips.micro", "Micro MIPS" }, - { "hex.builtin.view.disassembler.x86.16bit", "16位" }, - { "hex.builtin.view.disassembler.x86.32bit", "32位" }, - { "hex.builtin.view.disassembler.x86.64bit", "64位" }, - - { "hex.builtin.view.disassembler.ppc.32bit", "32位" }, - { "hex.builtin.view.disassembler.ppc.64bit", "64位" }, + { "hex.builtin.view.disassembler.ppc.qpx", "Quad Processing Extensions" }, + { "hex.builtin.view.disassembler.ppc.spe", "Signal Processing Engine" }, + //{ "hex.builtin.view.disassembler.ppc.booke", "Book-E" }, { "hex.builtin.view.disassembler.sparc.v9", "Sparc V9" }, + //{ "hex.builtin.view.disassembler.riscv.compressed", "Compressed" }, + + { "hex.builtin.view.disassembler.m68k.000", "000" }, + { "hex.builtin.view.disassembler.m68k.010", "010" }, + { "hex.builtin.view.disassembler.m68k.020", "020" }, + { "hex.builtin.view.disassembler.m68k.030", "030" }, + { "hex.builtin.view.disassembler.m68k.040", "040" }, + { "hex.builtin.view.disassembler.m68k.060", "060" }, + + { "hex.builtin.view.disassembler.m680x.6301", "6301" }, + { "hex.builtin.view.disassembler.m680x.6309", "6309" }, + { "hex.builtin.view.disassembler.m680x.6800", "6800" }, + { "hex.builtin.view.disassembler.m680x.6801", "6801" }, + { "hex.builtin.view.disassembler.m680x.6805", "6805" }, + { "hex.builtin.view.disassembler.m680x.6808", "6808" }, + { "hex.builtin.view.disassembler.m680x.6809", "6809" }, + { "hex.builtin.view.disassembler.m680x.6811", "6811" }, + { "hex.builtin.view.disassembler.m680x.cpu12", "CPU12" }, + { "hex.builtin.view.disassembler.m680x.hcs08", "HCS08" }, + + { "hex.builtin.view.disassembler.mos65xx.6502", "6502" }, + { "hex.builtin.view.disassembler.mos65xx.65c02", "65C02" }, + { "hex.builtin.view.disassembler.mos65xx.w65c02", "W65C02" }, + { "hex.builtin.view.disassembler.mos65xx.65816", "65816" }, + { "hex.builtin.view.disassembler.mos65xx.65816_long_m", "65816 Long M" }, + { "hex.builtin.view.disassembler.mos65xx.65816_long_x", "65816 Long X" }, + { "hex.builtin.view.disassembler.mos65xx.65816_long_mx", "65816 Long MX" }, + + //{ "hex.builtin.view.disassembler.bpf.classic", "Classic" }, + //{ "hex.builtin.view.disassembler.bpf.extended", "Extended" }, + { "hex.builtin.view.disassembler.disassemble", "反汇编" }, { "hex.builtin.view.disassembler.disassembling", "反汇编中..." }, { "hex.builtin.view.disassembler.disassembly.title", "反汇编" },