diff --git a/disasm-arm.cc b/disasm-arm.cc new file mode 100644 index 0000000..3ed5015 --- /dev/null +++ b/disasm-arm.cc @@ -0,0 +1,115 @@ +#include + +#include "disasm-arm.h" +#include "log.h" + + +static int +is_cs_nop_ins(cs_insn *ins) +{ + switch(ins->id) { + default: + return 0; + } +} + + +static int +is_cs_semantic_nop_ins(cs_insn *ins) +{ + switch(ins->id) { + default: + return 0; + } +} + + +static int +is_cs_trap_ins(cs_insn *ins) +{ + switch(ins->id) { + default: + return 0; + } +} + + +static int +is_cs_cflow_group(uint8_t g) +{ + return 0; +} + + +static int +is_cs_cflow_ins(cs_insn *ins) +{ + return 0; +} + + +static int +is_cs_call_ins(cs_insn *ins) +{ + switch(ins->id) { + default: + return 0; + } +} + + +static int +is_cs_ret_ins(cs_insn *ins) +{ + switch(ins->id) { + default: + return 0; + } +} + + +static int +is_cs_unconditional_jmp_ins(cs_insn *ins) +{ + switch(ins->id) { + default: + return 0; + } +} + + +static int +is_cs_conditional_cflow_ins(cs_insn *ins) +{ + switch(ins->id) { + default: + return 0; + } +} + + +static int +is_cs_privileged_ins(cs_insn *ins) +{ + switch(ins->id) { + default: + return 0; + } +} + + +static uint8_t +cs_to_nucleus_op_type(x86_op_type op) +{ + switch(op) { + default: + return Operand::OP_TYPE_NONE; + } +} + + +int +nucleus_disasm_bb_arm(Binary *bin, DisasmSection *dis, BB *bb) +{ + return 0; +} diff --git a/disasm-arm.h b/disasm-arm.h new file mode 100644 index 0000000..a02d338 --- /dev/null +++ b/disasm-arm.h @@ -0,0 +1,8 @@ +#ifndef NUCLEUS_DISASM_ARM_H +#define NUCLEUS_DISASM_ARM_H + +#include "disasm.h" + +int nucleus_disasm_bb_arm(Binary *bin, DisasmSection *dis, BB *bb); + +#endif /* NUCLEUS_DISASM_ARM_H */ diff --git a/disasm-mips.cc b/disasm-mips.cc new file mode 100644 index 0000000..1a52b38 --- /dev/null +++ b/disasm-mips.cc @@ -0,0 +1,115 @@ +#include + +#include "disasm-mips.h" +#include "log.h" + + +static int +is_cs_nop_ins(cs_insn *ins) +{ + switch(ins->id) { + default: + return 0; + } +} + + +static int +is_cs_semantic_nop_ins(cs_insn *ins) +{ + switch(ins->id) { + default: + return 0; + } +} + + +static int +is_cs_trap_ins(cs_insn *ins) +{ + switch(ins->id) { + default: + return 0; + } +} + + +static int +is_cs_cflow_group(uint8_t g) +{ + return 0; +} + + +static int +is_cs_cflow_ins(cs_insn *ins) +{ + return 0; +} + + +static int +is_cs_call_ins(cs_insn *ins) +{ + switch(ins->id) { + default: + return 0; + } +} + + +static int +is_cs_ret_ins(cs_insn *ins) +{ + switch(ins->id) { + default: + return 0; + } +} + + +static int +is_cs_unconditional_jmp_ins(cs_insn *ins) +{ + switch(ins->id) { + default: + return 0; + } +} + + +static int +is_cs_conditional_cflow_ins(cs_insn *ins) +{ + switch(ins->id) { + default: + return 0; + } +} + + +static int +is_cs_privileged_ins(cs_insn *ins) +{ + switch(ins->id) { + default: + return 0; + } +} + + +static uint8_t +cs_to_nucleus_op_type(x86_op_type op) +{ + switch(op) { + default: + return Operand::OP_TYPE_NONE; + } +} + + +int +nucleus_disasm_bb_mips(Binary *bin, DisasmSection *dis, BB *bb) +{ + return 0; +} diff --git a/disasm-mips.h b/disasm-mips.h new file mode 100644 index 0000000..e904a42 --- /dev/null +++ b/disasm-mips.h @@ -0,0 +1,8 @@ +#ifndef NUCLEUS_DISASM_MIPS_H +#define NUCLEUS_DISASM_MIPS_H + +#include "disasm.h" + +int nucleus_disasm_bb_mips(Binary *bin, DisasmSection *dis, BB *bb); + +#endif /* NUCLEUS_DISASM_MIPS_H */ diff --git a/disasm-ppc.cc b/disasm-ppc.cc new file mode 100644 index 0000000..775c68e --- /dev/null +++ b/disasm-ppc.cc @@ -0,0 +1,115 @@ +#include + +#include "disasm-ppc.h" +#include "log.h" + + +static int +is_cs_nop_ins(cs_insn *ins) +{ + switch(ins->id) { + default: + return 0; + } +} + + +static int +is_cs_semantic_nop_ins(cs_insn *ins) +{ + switch(ins->id) { + default: + return 0; + } +} + + +static int +is_cs_trap_ins(cs_insn *ins) +{ + switch(ins->id) { + default: + return 0; + } +} + + +static int +is_cs_cflow_group(uint8_t g) +{ + return 0; +} + + +static int +is_cs_cflow_ins(cs_insn *ins) +{ + return 0; +} + + +static int +is_cs_call_ins(cs_insn *ins) +{ + switch(ins->id) { + default: + return 0; + } +} + + +static int +is_cs_ret_ins(cs_insn *ins) +{ + switch(ins->id) { + default: + return 0; + } +} + + +static int +is_cs_unconditional_jmp_ins(cs_insn *ins) +{ + switch(ins->id) { + default: + return 0; + } +} + + +static int +is_cs_conditional_cflow_ins(cs_insn *ins) +{ + switch(ins->id) { + default: + return 0; + } +} + + +static int +is_cs_privileged_ins(cs_insn *ins) +{ + switch(ins->id) { + default: + return 0; + } +} + + +static uint8_t +cs_to_nucleus_op_type(x86_op_type op) +{ + switch(op) { + default: + return Operand::OP_TYPE_NONE; + } +} + + +int +nucleus_disasm_bb_ppc(Binary *bin, DisasmSection *dis, BB *bb) +{ + return 0; +} diff --git a/disasm-ppc.h b/disasm-ppc.h new file mode 100644 index 0000000..2fc1a9c --- /dev/null +++ b/disasm-ppc.h @@ -0,0 +1,8 @@ +#ifndef NUCLEUS_DISASM_PPC_H +#define NUCLEUS_DISASM_PPC_H + +#include "disasm.h" + +int nucleus_disasm_bb_ppc(Binary *bin, DisasmSection *dis, BB *bb); + +#endif /* NUCLEUS_DISASM_PPC_H */ diff --git a/disasm-x86.cc b/disasm-x86.cc index d3b2e95..3885621 100644 --- a/disasm-x86.cc +++ b/disasm-x86.cc @@ -1,24 +1,6 @@ -#include -#include -#include - -#include -#include -#include -#include -#include -#include - #include -#include "loader.h" -#include "bb.h" -#include "insn.h" -#include "dataregion.h" -#include "disasm.h" -#include "strategy.h" -#include "util.h" -#include "options.h" +#include "disasm-x86.h" #include "log.h" diff --git a/disasm.cc b/disasm.cc index ba0b995..7f01943 100644 --- a/disasm.cc +++ b/disasm.cc @@ -21,6 +21,9 @@ #include "options.h" #include "log.h" +#include "disasm-arm.h" +#include "disasm-mips.h" +#include "disasm-ppc.h" #include "disasm-x86.h" @@ -189,6 +192,12 @@ static int nucleus_disasm_bb(Binary *bin, DisasmSection *dis, BB *bb) { switch(bin->arch) { + case Binary::ARCH_ARM: + return nucleus_disasm_bb_arm(bin, dis, bb); + case Binary::ARCH_MIPS: + return nucleus_disasm_bb_mips(bin, dis, bb); + case Binary::ARCH_PPC: + return nucleus_disasm_bb_ppc(bin, dis, bb); case Binary::ARCH_X86: return nucleus_disasm_bb_x86(bin, dis, bb); default: