| (* 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; |
| } |