1
0
mirror of synced 2024-11-28 09:30:51 +01:00

sys: Added RISC-V, M68K, M680X, Webassembly, MOS65XX and BPF architecture to disassembler

This commit is contained in:
WerWolv 2022-01-24 23:56:02 +01:00
parent 0e08b0226b
commit 6319449cbd
6 changed files with 363 additions and 178 deletions

View File

@ -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<Disassembly> m_disassembly;

View File

@ -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<int *>(&this->m_architecture), Disassembler::ArchitectureNames, Disassembler::getArchitectureSupportedCount());
if (ImGui::Combo("hex.builtin.view.disassembler.arch"_lang, reinterpret_cast<int *>(&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;
if (this->m_modeBasicARM == cs_mode(0))
this->m_modeBasicARM = CS_MODE_ARM;
if (ImGui::RadioButton("hex.builtin.view.disassembler.arm.arm"_lang, this->m_modeBasicARM == CS_MODE_ARM))
this->m_modeBasicARM = CS_MODE_ARM;
case Architecture::ARM: {
static int mode = CS_MODE_ARM;
ImGui::RadioButton("hex.builtin.view.disassembler.arm.arm"_lang, &mode, 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;
ImGui::RadioButton("hex.builtin.view.disassembler.arm.thumb"_lang, &mode, 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);
static int extraMode = 0;
ImGui::RadioButton("hex.builtin.view.disassembler.arm.default"_lang, &extraMode, 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::RadioButton("hex.builtin.view.disassembler.arm.cortex_m"_lang, &extraMode, 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;
ImGui::RadioButton("hex.builtin.view.disassembler.arm.armv8"_lang, &extraMode, 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;
if (this->m_modeBasicMIPS == cs_mode(0))
this->m_modeBasicMIPS = CS_MODE_MIPS32;
if (ImGui::RadioButton("hex.builtin.view.disassembler.mips.mips32"_lang, this->m_modeBasicMIPS == CS_MODE_MIPS32))
this->m_modeBasicMIPS = CS_MODE_MIPS32;
case Architecture::MIPS: {
static int mode = CS_MODE_MIPS32;
ImGui::RadioButton("hex.builtin.view.disassembler.mips.mips32"_lang, &mode, 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::RadioButton("hex.builtin.view.disassembler.mips.mips64"_lang, &mode, 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;
ImGui::RadioButton("hex.builtin.view.disassembler.mips.mips32R6"_lang, &mode, CS_MODE_MIPS32R6);
ImGui::Checkbox("hex.builtin.view.disassembler.mips.micro"_lang, &this->m_micoMode);
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);
static bool microMode;
ImGui::Checkbox("hex.builtin.view.disassembler.mips.micro"_lang, &microMode);
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;
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;
case Architecture::X86: {
static int mode = CS_MODE_32;
ImGui::RadioButton("hex.builtin.view.disassembler.16bit"_lang, &mode, 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::RadioButton("hex.builtin.view.disassembler.32bit"_lang, &mode, 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;
ImGui::RadioButton("hex.builtin.view.disassembler.64bit"_lang, &mode, 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;
if (m_modeBasicPPC == cs_mode(0))
this->m_modeBasicPPC = CS_MODE_32;
if (ImGui::RadioButton("hex.builtin.view.disassembler.ppc.32bit"_lang, this->m_modeBasicPPC == CS_MODE_32))
this->m_modeBasicPPC = CS_MODE_32;
case Architecture::PPC: {
static int mode = CS_MODE_32;
ImGui::RadioButton("hex.builtin.view.disassembler.32bit"_lang, &mode, 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;
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;
ImGui::RadioButton("hex.builtin.view.disassembler.64bit"_lang, &mode, CS_MODE_64);
ImGui::Checkbox("hex.builtin.view.disassembler.sparc.v9"_lang, &this->m_sparcV9Mode);
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);
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: {
static bool v9Mode = false;
ImGui::Checkbox("hex.builtin.view.disassembler.sparc.v9"_lang, &v9Mode);
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<const char*, cs_mode> 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<const char*, cs_mode> 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<const char*, cs_mode> 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);

View File

@ -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..." },

View File

@ -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..." },

View File

@ -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" },

View File

@ -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", "反汇编" },