You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.0 KiB
56 lines
1.0 KiB
(* Capstone Disassembly Engine
|
|
* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2014 *)
|
|
|
|
open Arm_const
|
|
|
|
let _CS_OP_ARCH = 5;;
|
|
let _CS_OP_CIMM = _CS_OP_ARCH (* C-Immediate *)
|
|
let _CS_OP_PIMM = _CS_OP_ARCH + 1 (* P-Immediate *)
|
|
|
|
|
|
(* architecture specific info of instruction *)
|
|
type arm_op_shift = {
|
|
shift_type: int; (* TODO: covert this to pattern like arm_op_value? *)
|
|
shift_value: int;
|
|
}
|
|
|
|
type arm_op_mem = {
|
|
base: int;
|
|
index: int;
|
|
scale: int;
|
|
disp: int;
|
|
lshift: int;
|
|
}
|
|
|
|
type arm_op_value =
|
|
| ARM_OP_INVALID of int
|
|
| ARM_OP_REG of int
|
|
| ARM_OP_CIMM of int
|
|
| ARM_OP_PIMM of int
|
|
| ARM_OP_IMM of int
|
|
| ARM_OP_FP of float
|
|
| ARM_OP_MEM of arm_op_mem
|
|
| ARM_OP_SETEND of int
|
|
|
|
type arm_op = {
|
|
vector_index: int;
|
|
shift: arm_op_shift;
|
|
value: arm_op_value;
|
|
subtracted: bool;
|
|
access: int;
|
|
neon_lane: int;
|
|
}
|
|
|
|
type cs_arm = {
|
|
usermode: bool;
|
|
vector_size: int;
|
|
vector_data: int;
|
|
cps_mode: int;
|
|
cps_flag: int;
|
|
cc: int;
|
|
update_flags: bool;
|
|
writeback: bool;
|
|
mem_barrier: int;
|
|
operands: arm_op array;
|
|
}
|