xref: /aosp_15_r20/external/capstone/bindings/ocaml/arm.ml (revision 9a0e4156d50a75a99ec4f1653a0e9602a5d45c18)
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