Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
stenzek
GitHub Repository: stenzek/duckstation
Path: blob/master/dep/zydis/include/Zydis/Status.h
4216 views
1
/***************************************************************************************************
2
3
Zyan Disassembler Library (Zydis)
4
5
Original Author : Florian Bernd
6
7
* Permission is hereby granted, free of charge, to any person obtaining a copy
8
* of this software and associated documentation files (the "Software"), to deal
9
* in the Software without restriction, including without limitation the rights
10
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
* copies of the Software, and to permit persons to whom the Software is
12
* furnished to do so, subject to the following conditions:
13
*
14
* The above copyright notice and this permission notice shall be included in all
15
* copies or substantial portions of the Software.
16
*
17
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
* SOFTWARE.
24
25
***************************************************************************************************/
26
27
/**
28
* @file
29
* Status code definitions and check macros.
30
*/
31
32
#ifndef ZYDIS_STATUS_H
33
#define ZYDIS_STATUS_H
34
35
#include <Zycore/Status.h>
36
37
#ifdef __cplusplus
38
extern "C" {
39
#endif
40
41
/* ============================================================================================== */
42
/* Status codes */
43
/* ============================================================================================== */
44
45
/* ---------------------------------------------------------------------------------------------- */
46
/* Module IDs */
47
/* ---------------------------------------------------------------------------------------------- */
48
49
/**
50
* The zydis module id.
51
*/
52
#define ZYAN_MODULE_ZYDIS 0x002u
53
54
/* ---------------------------------------------------------------------------------------------- */
55
/* Status codes */
56
/* ---------------------------------------------------------------------------------------------- */
57
58
/* ---------------------------------------------------------------------------------------------- */
59
/* Decoder */
60
/* ---------------------------------------------------------------------------------------------- */
61
62
/**
63
* An attempt was made to read data from an input data-source that has no more
64
* data available.
65
*/
66
#define ZYDIS_STATUS_NO_MORE_DATA \
67
ZYAN_MAKE_STATUS(1u, ZYAN_MODULE_ZYDIS, 0x00u)
68
69
/**
70
* An general error occured while decoding the current instruction. The
71
* instruction might be undefined.
72
*/
73
#define ZYDIS_STATUS_DECODING_ERROR \
74
ZYAN_MAKE_STATUS(1u, ZYAN_MODULE_ZYDIS, 0x01u)
75
76
/**
77
* The instruction exceeded the maximum length of 15 bytes.
78
*/
79
#define ZYDIS_STATUS_INSTRUCTION_TOO_LONG \
80
ZYAN_MAKE_STATUS(1u, ZYAN_MODULE_ZYDIS, 0x02u)
81
82
/**
83
* The instruction encoded an invalid register.
84
*/
85
#define ZYDIS_STATUS_BAD_REGISTER \
86
ZYAN_MAKE_STATUS(1u, ZYAN_MODULE_ZYDIS, 0x03u)
87
88
/**
89
* A lock-prefix (F0) was found while decoding an instruction that does not
90
* support locking.
91
*/
92
#define ZYDIS_STATUS_ILLEGAL_LOCK \
93
ZYAN_MAKE_STATUS(1u, ZYAN_MODULE_ZYDIS, 0x04u)
94
95
/**
96
* A legacy-prefix (F2, F3, 66) was found while decoding a XOP/VEX/EVEX/MVEX
97
* instruction.
98
*/
99
#define ZYDIS_STATUS_ILLEGAL_LEGACY_PFX \
100
ZYAN_MAKE_STATUS(1u, ZYAN_MODULE_ZYDIS, 0x05u)
101
102
/**
103
* A rex-prefix was found while decoding a XOP/VEX/EVEX/MVEX instruction.
104
*/
105
#define ZYDIS_STATUS_ILLEGAL_REX \
106
ZYAN_MAKE_STATUS(1u, ZYAN_MODULE_ZYDIS, 0x06u)
107
108
/**
109
* An invalid opcode-map value was found while decoding a XOP/VEX/EVEX/MVEX-prefix.
110
*/
111
#define ZYDIS_STATUS_INVALID_MAP \
112
ZYAN_MAKE_STATUS(1u, ZYAN_MODULE_ZYDIS, 0x07u)
113
114
/**
115
* An error occured while decoding the EVEX-prefix.
116
*/
117
#define ZYDIS_STATUS_MALFORMED_EVEX \
118
ZYAN_MAKE_STATUS(1u, ZYAN_MODULE_ZYDIS, 0x08u)
119
120
/**
121
* An error occured while decoding the MVEX-prefix.
122
*/
123
#define ZYDIS_STATUS_MALFORMED_MVEX \
124
ZYAN_MAKE_STATUS(1u, ZYAN_MODULE_ZYDIS, 0x09u)
125
126
/**
127
* An invalid write-mask was specified for an EVEX/MVEX instruction.
128
*/
129
#define ZYDIS_STATUS_INVALID_MASK \
130
ZYAN_MAKE_STATUS(1u, ZYAN_MODULE_ZYDIS, 0x0Au)
131
132
/* ---------------------------------------------------------------------------------------------- */
133
/* Formatter */
134
/* ---------------------------------------------------------------------------------------------- */
135
136
/**
137
* Returning this status code in some specified formatter callbacks will cause
138
* the formatter to omit the corresponding token.
139
*
140
* Valid callbacks:
141
* - `ZYDIS_FORMATTER_FUNC_PRE_OPERAND`
142
* - `ZYDIS_FORMATTER_FUNC_POST_OPERAND`
143
* - `ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_REG`
144
* - `ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_MEM`
145
* - `ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_PTR`
146
* - `ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_IMM`
147
*/
148
#define ZYDIS_STATUS_SKIP_TOKEN \
149
ZYAN_MAKE_STATUS(0u, ZYAN_MODULE_ZYDIS, 0x0Bu)
150
151
/* ---------------------------------------------------------------------------------------------- */
152
/* Encoder */
153
/* ---------------------------------------------------------------------------------------------- */
154
155
#define ZYDIS_STATUS_IMPOSSIBLE_INSTRUCTION \
156
ZYAN_MAKE_STATUS(1u, ZYAN_MODULE_ZYDIS, 0x0Cu)
157
158
/* ---------------------------------------------------------------------------------------------- */
159
160
/* ============================================================================================== */
161
162
163
#ifdef __cplusplus
164
}
165
#endif
166
167
#endif /* ZYDIS_STATUS_H */
168
169