1*9a0e4156SSadaf Ebrahimi(* Capstone Disassembly Engine 2*9a0e4156SSadaf Ebrahimi * By Nguyen Anh Quynh <[email protected]>, 2013-2014 *) 3*9a0e4156SSadaf Ebrahimi 4*9a0e4156SSadaf Ebrahimiopen Arm_const 5*9a0e4156SSadaf Ebrahimi 6*9a0e4156SSadaf Ebrahimilet _CS_OP_ARCH = 5;; 7*9a0e4156SSadaf Ebrahimilet _CS_OP_CIMM = _CS_OP_ARCH (* C-Immediate *) 8*9a0e4156SSadaf Ebrahimilet _CS_OP_PIMM = _CS_OP_ARCH + 1 (* P-Immediate *) 9*9a0e4156SSadaf Ebrahimi 10*9a0e4156SSadaf Ebrahimi 11*9a0e4156SSadaf Ebrahimi(* architecture specific info of instruction *) 12*9a0e4156SSadaf Ebrahimitype arm_op_shift = { 13*9a0e4156SSadaf Ebrahimi shift_type: int; (* TODO: covert this to pattern like arm_op_value? *) 14*9a0e4156SSadaf Ebrahimi shift_value: int; 15*9a0e4156SSadaf Ebrahimi} 16*9a0e4156SSadaf Ebrahimi 17*9a0e4156SSadaf Ebrahimitype arm_op_mem = { 18*9a0e4156SSadaf Ebrahimi base: int; 19*9a0e4156SSadaf Ebrahimi index: int; 20*9a0e4156SSadaf Ebrahimi scale: int; 21*9a0e4156SSadaf Ebrahimi disp: int; 22*9a0e4156SSadaf Ebrahimi lshift: int; 23*9a0e4156SSadaf Ebrahimi} 24*9a0e4156SSadaf Ebrahimi 25*9a0e4156SSadaf Ebrahimitype arm_op_value = 26*9a0e4156SSadaf Ebrahimi | ARM_OP_INVALID of int 27*9a0e4156SSadaf Ebrahimi | ARM_OP_REG of int 28*9a0e4156SSadaf Ebrahimi | ARM_OP_CIMM of int 29*9a0e4156SSadaf Ebrahimi | ARM_OP_PIMM of int 30*9a0e4156SSadaf Ebrahimi | ARM_OP_IMM of int 31*9a0e4156SSadaf Ebrahimi | ARM_OP_FP of float 32*9a0e4156SSadaf Ebrahimi | ARM_OP_MEM of arm_op_mem 33*9a0e4156SSadaf Ebrahimi | ARM_OP_SETEND of int 34*9a0e4156SSadaf Ebrahimi 35*9a0e4156SSadaf Ebrahimitype arm_op = { 36*9a0e4156SSadaf Ebrahimi vector_index: int; 37*9a0e4156SSadaf Ebrahimi shift: arm_op_shift; 38*9a0e4156SSadaf Ebrahimi value: arm_op_value; 39*9a0e4156SSadaf Ebrahimi subtracted: bool; 40*9a0e4156SSadaf Ebrahimi access: int; 41*9a0e4156SSadaf Ebrahimi neon_lane: int; 42*9a0e4156SSadaf Ebrahimi} 43*9a0e4156SSadaf Ebrahimi 44*9a0e4156SSadaf Ebrahimitype cs_arm = { 45*9a0e4156SSadaf Ebrahimi usermode: bool; 46*9a0e4156SSadaf Ebrahimi vector_size: int; 47*9a0e4156SSadaf Ebrahimi vector_data: int; 48*9a0e4156SSadaf Ebrahimi cps_mode: int; 49*9a0e4156SSadaf Ebrahimi cps_flag: int; 50*9a0e4156SSadaf Ebrahimi cc: int; 51*9a0e4156SSadaf Ebrahimi update_flags: bool; 52*9a0e4156SSadaf Ebrahimi writeback: bool; 53*9a0e4156SSadaf Ebrahimi mem_barrier: int; 54*9a0e4156SSadaf Ebrahimi operands: arm_op array; 55*9a0e4156SSadaf Ebrahimi} 56