30 {
"arm", CS_ARCH_ARM, CS_MODE_ARM },
31 {
"armbe", CS_ARCH_ARM, CS_MODE_ARM | CS_MODE_BIG_ENDIAN },
32 {
"cortexm", CS_ARCH_ARM, CS_MODE_ARM | CS_MODE_THUMB | CS_MODE_MCLASS },
33 {
"thumb", CS_ARCH_ARM, CS_MODE_ARM | CS_MODE_THUMB },
36 {
"arm64", CS_ARCH_ARM64, CS_MODE_LITTLE_ENDIAN },
37 {
"arm64be", CS_ARCH_ARM64, CS_MODE_BIG_ENDIAN },
39 {
"riscv32", CS_ARCH_RISCV, CS_MODE_RISCV32 | CS_MODE_RISCVC },
40 {
"riscv64", CS_ARCH_RISCV, CS_MODE_RISCV64 | CS_MODE_RISCVC },
45 {
"arm64", CS_ARCH_AARCH64, CS_MODE_LITTLE_ENDIAN },
46 {
"arm64be", CS_ARCH_AARCH64, CS_MODE_BIG_ENDIAN },
47 {
"riscv32", CS_ARCH_RISCV, CS_MODE_RISCV32 | CS_MODE_RISCV_C },
48 {
"riscv64", CS_ARCH_RISCV, CS_MODE_RISCV64 | CS_MODE_RISCV_C },
49 {
"xtensa", CS_ARCH_XTENSA, CS_MODE_XTENSA_ESP32 },
50 {
"xtensa_s2", CS_ARCH_XTENSA, CS_MODE_XTENSA_ESP32S2 },
51 {
"xtensa_8266", CS_ARCH_XTENSA, CS_MODE_XTENSA_ESP8266 },
52 {
"arc", CS_ARCH_ARC, CS_MODE_LITTLE_ENDIAN },
69 for (uint16_t i = 0; i < insn->size; i++)
70 sprintf(&opcode[3 * i],
" %02" PRIx8, insn->bytes[i]);
73 insn->address, opcode, insn->mnemonic,
74 insn->op_str[0] ?
"\t" :
"", insn->op_str);
78 uint64_t
address,
unsigned int count,
const char *insn_set)
87 command_print(
cmd,
"Instruction set \"%s\" not supported by Capstone", insn_set);
93 if (csret != CS_ERR_OK) {
98 csret = cs_option(handle, CS_OPT_SKIPDATA, CS_OPT_ON);
99 if (csret != CS_ERR_OK) {
105 cs_insn *insn = cs_malloc(handle);
122 size_t size =
sizeof(buf);
123 const uint8_t *tmp = buf;
124 bool csbool = cs_disasm_iter(handle, &tmp, &
size, &
address, insn);
126 command_print(
cmd,
"Capstone cs_disasm_iter() failed: %s", cs_strerror(csret));
void command_print_sameline(struct command_invocation *cmd, const char *format,...)
void command_print(struct command_invocation *cmd, const char *format,...)
uint32_t size
Size of dw_spi_transaction::buffer.
uint32_t address
Starting address. Sector aligned.
int oocd_cs_disassemble(struct command_invocation *cmd, struct target *target, uint64_t address, unsigned int count, const char *insn_set)
int oocd_cs_list_insn_types(struct command_invocation *cmd)
static void print_opcode(struct command_invocation *cmd, const cs_insn *insn)
static struct @119 all_archs[]
When run_command is called, a new instance will be created on the stack, filled with the proper value...
int target_read_buffer(struct target *target, target_addr_t address, uint32_t size, uint8_t *buffer)
#define ARRAY_SIZE(x)
Compute the number of elements of a variable length array.