1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
// clang-format off
/*****************************************************************************/
/*****************************************************************************/
#ifndef REGDEF
#error Must define REGDEF macro before including this file
#endif
#ifndef REGALIAS
#define REGALIAS(alias, realname)
#endif
#if defined(_TARGET_XARCH_)
#if defined(_TARGET_X86_)
/*
REGDEF(name, rnum, mask, sname) */
REGDEF(EAX, 0, 0x01, "eax" )
REGDEF(ECX, 1, 0x02, "ecx" )
REGDEF(EDX, 2, 0x04, "edx" )
REGDEF(EBX, 3, 0x08, "ebx" )
REGDEF(ESP, 4, 0x10, "esp" )
REGDEF(EBP, 5, 0x20, "ebp" )
REGDEF(ESI, 6, 0x40, "esi" )
REGDEF(EDI, 7, 0x80, "edi" )
REGALIAS(RAX, EAX)
REGALIAS(RCX, ECX)
REGALIAS(RDX, EDX)
REGALIAS(RBX, EBX)
REGALIAS(RSP, ESP)
REGALIAS(RBP, EBP)
REGALIAS(RSI, ESI)
REGALIAS(RDI, EDI)
#else // !defined(_TARGET_X86_)
/*
REGDEF(name, rnum, mask, sname) */
REGDEF(RAX, 0, 0x0001, "rax" )
REGDEF(RCX, 1, 0x0002, "rcx" )
REGDEF(RDX, 2, 0x0004, "rdx" )
REGDEF(RBX, 3, 0x0008, "rbx" )
REGDEF(RSP, 4, 0x0010, "rsp" )
REGDEF(RBP, 5, 0x0020, "rbp" )
REGDEF(RSI, 6, 0x0040, "rsi" )
REGDEF(RDI, 7, 0x0080, "rdi" )
REGDEF(R8, 8, 0x0100, "r8" )
REGDEF(R9, 9, 0x0200, "r9" )
REGDEF(R10, 10, 0x0400, "r10" )
REGDEF(R11, 11, 0x0800, "r11" )
REGDEF(R12, 12, 0x1000, "r12" )
REGDEF(R13, 13, 0x2000, "r13" )
REGDEF(R14, 14, 0x4000, "r14" )
REGDEF(R15, 15, 0x8000, "r15" )
REGALIAS(EAX, RAX)
REGALIAS(ECX, RCX)
REGALIAS(EDX, RDX)
REGALIAS(EBX, RBX)
REGALIAS(ESP, RSP)
REGALIAS(EBP, RBP)
REGALIAS(ESI, RSI)
REGALIAS(EDI, RDI)
#endif // !defined(_TARGET_X86_)
#ifdef _TARGET_AMD64_
#define XMMBASE 16
#define XMMMASK(x) (__int64(1) << (x+XMMBASE))
#else // !_TARGET_AMD64_
#define XMMBASE 8
#define XMMMASK(x) (__int32(1) << (x+XMMBASE))
#endif // !_TARGET_AMD64_
REGDEF(XMM0, 0+XMMBASE, XMMMASK(0), "mm0" )
REGDEF(XMM1, 1+XMMBASE, XMMMASK(1), "mm1" )
REGDEF(XMM2, 2+XMMBASE, XMMMASK(2), "mm2" )
REGDEF(XMM3, 3+XMMBASE, XMMMASK(3), "mm3" )
REGDEF(XMM4, 4+XMMBASE, XMMMASK(4), "mm4" )
REGDEF(XMM5, 5+XMMBASE, XMMMASK(5), "mm5" )
REGDEF(XMM6, 6+XMMBASE, XMMMASK(6), "mm6" )
REGDEF(XMM7, 7+XMMBASE, XMMMASK(7), "mm7" )
#ifdef _TARGET_X86_
REGDEF(STK, 8+XMMBASE, 0x0000, "STK" )
#else // !_TARGET_X86_
REGDEF(XMM8, 8+XMMBASE, XMMMASK(8), "mm8" )
REGDEF(XMM9, 9+XMMBASE, XMMMASK(9), "mm9" )
REGDEF(XMM10, 10+XMMBASE, XMMMASK(10), "mm10" )
REGDEF(XMM11, 11+XMMBASE, XMMMASK(11), "mm11" )
REGDEF(XMM12, 12+XMMBASE, XMMMASK(12), "mm12" )
REGDEF(XMM13, 13+XMMBASE, XMMMASK(13), "mm13" )
REGDEF(XMM14, 14+XMMBASE, XMMMASK(14), "mm14" )
REGDEF(XMM15, 15+XMMBASE, XMMMASK(15), "mm15" )
REGDEF(STK, 16+XMMBASE, 0x0000, "STK" )
#endif // !_TARGET_X86_
#elif defined(_TARGET_ARM_)
#include "registerarm.h"
#elif defined(_TARGET_ARM64_)
#include "registerarm64.h"
#else
#error Unsupported or unset target architecture
#endif // target type
/*****************************************************************************/
#undef REGDEF
#undef REGALIAS
#undef XMMMASK
/*****************************************************************************/
// clang-format on
|