1#pragma warning(disable:4067)
3#if not (defined REG_SPEC || defined REG_SPEC_NO_CAPSTONE)
4#error REG_SPEC have to be specified before including specs
7#define TT_MUTABLE_REG true
8#define TT_IMMUTABLE_REG false
10// REG_SPEC(UPPER_NAME, LOWER_NAME, ARM32_UPPER, ARM32_LOWER, ARM32_PARENT, MUTABLE)
12// Thirteen general-purpose 32-bit registers, R0 to R12
13REG_SPEC(R0, r0, triton::bitsize::dword-1, 0, R0, TT_MUTABLE_REG) // r0
14REG_SPEC(R1, r1, triton::bitsize::dword-1, 0, R1, TT_MUTABLE_REG) // r1
15REG_SPEC(R2, r2, triton::bitsize::dword-1, 0, R2, TT_MUTABLE_REG) // r2
16REG_SPEC(R3, r3, triton::bitsize::dword-1, 0, R3, TT_MUTABLE_REG) // r3
17REG_SPEC(R4, r4, triton::bitsize::dword-1, 0, R4, TT_MUTABLE_REG) // r4
18REG_SPEC(R5, r5, triton::bitsize::dword-1, 0, R5, TT_MUTABLE_REG) // r5
19REG_SPEC(R6, r6, triton::bitsize::dword-1, 0, R6, TT_MUTABLE_REG) // r6
20REG_SPEC(R7, r7, triton::bitsize::dword-1, 0, R7, TT_MUTABLE_REG) // r7
21REG_SPEC(R8, r8, triton::bitsize::dword-1, 0, R8, TT_MUTABLE_REG) // r8
22REG_SPEC(R9, r9, triton::bitsize::dword-1, 0, R9, TT_MUTABLE_REG) // r9
23REG_SPEC(R10, r10, triton::bitsize::dword-1, 0, R10, TT_MUTABLE_REG) // r10
24REG_SPEC(R11, r11, triton::bitsize::dword-1, 0, R11, TT_MUTABLE_REG) // r11
25REG_SPEC(R12, r12, triton::bitsize::dword-1, 0, R12, TT_MUTABLE_REG) // r12
27// Three 32-bit registers with special uses, SP, LR, and PC, that can be described as R13 to R15.
28REG_SPEC(SP, sp, triton::bitsize::dword-1, 0, SP, TT_MUTABLE_REG) // SP
29REG_SPEC(R14, r14, triton::bitsize::dword-1, 0, R14, TT_MUTABLE_REG) // LR (r14)
30REG_SPEC(PC, pc, triton::bitsize::dword-1, 0, PC, TT_MUTABLE_REG) // PC
31REG_SPEC(APSR, apsr, triton::bitsize::dword-1, 0, APSR, TT_MUTABLE_REG) // APSR
33// Unique flag registers
34REG_SPEC_NO_CAPSTONE(C, c, 0, 0, C, TT_MUTABLE_REG) // C (Carry)
35REG_SPEC_NO_CAPSTONE(N, n, 0, 0, N, TT_MUTABLE_REG) // N (Negative)
36REG_SPEC_NO_CAPSTONE(V, v, 0, 0, V, TT_MUTABLE_REG) // V (Overflow)
37REG_SPEC_NO_CAPSTONE(Z, z, 0, 0, Z, TT_MUTABLE_REG) // Z (Zero)
40#undef REG_SPEC_NO_CAPSTONE
41#undef TT_IMMUTABLE_REG
44#pragma warning(default:4067)