projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ubsan: z8k: index 10 out of bounds for type 'unsigned int const[10]'
[deliverable/binutils-gdb.git]
/
opcodes
/
i386-opc.h
diff --git
a/opcodes/i386-opc.h
b/opcodes/i386-opc.h
index 0bfb4d808cb235a93e367398d95b8f27da000f44..cdc7cb23e8c4880d76a8446132ff2d6c66c844f4 100644
(file)
--- a/
opcodes/i386-opc.h
+++ b/
opcodes/i386-opc.h
@@
-1,5
+1,5
@@
/* Declarations for Intel 80386 opcode table
/* Declarations for Intel 80386 opcode table
- Copyright (C) 2007-20
19
Free Software Foundation, Inc.
+ Copyright (C) 2007-20
20
Free Software Foundation, Inc.
This file is part of the GNU opcodes library.
This file is part of the GNU opcodes library.
@@
-403,14
+403,17
@@
enum
Modrm,
/* register is in low 3 bits of opcode */
ShortForm,
Modrm,
/* register is in low 3 bits of opcode */
ShortForm,
- /* special case for jump insns
.
*/
- Jump,
+ /* special case for jump insns
; value has to be 1
*/
+#define JUMP 1
/* call and jump */
/* call and jump */
- JumpDword,
+#define JUMP_DWORD 2
/* loop and jecxz */
/* loop and jecxz */
- JumpByte,
+#define JUMP_BYTE 3
/* special case for intersegment leaps/calls */
/* special case for intersegment leaps/calls */
- JumpInterSegment,
+#define JUMP_INTERSEGMENT 4
+ /* absolute address for jump */
+#define JUMP_ABSOLUTE 5
+ Jump,
/* FP insn memory format bit, sized by 0x4 */
FloatMF,
/* src/dest swap for floats. */
/* FP insn memory format bit, sized by 0x4 */
FloatMF,
/* src/dest swap for floats. */
@@
-429,6
+432,8
@@
enum
IgnoreSize,
/* default insn size depends on mode */
DefaultSize,
IgnoreSize,
/* default insn size depends on mode */
DefaultSize,
+ /* any memory size */
+ Anysize,
/* b suffix on instruction illegal */
No_bSuf,
/* w suffix on instruction illegal */
/* b suffix on instruction illegal */
No_bSuf,
/* w suffix on instruction illegal */
@@
-443,7
+448,11
@@
enum
No_ldSuf,
/* instruction needs FWAIT */
FWait,
No_ldSuf,
/* instruction needs FWAIT */
FWait,
- /* quick test for string instructions */
+ /* IsString provides for a quick test for string instructions, and
+ its actual value also indicates which of the operands (if any)
+ requires use of the %es segment. */
+#define IS_STRING_ES_OP0 2
+#define IS_STRING_ES_OP1 3
IsString,
/* RegMem is for instructions with a modrm byte where the register
destination operand should be encoded in the mod and regmem fields.
IsString,
/* RegMem is for instructions with a modrm byte where the register
destination operand should be encoded in the mod and regmem fields.
@@
-644,16
+653,14
@@
typedef struct i386_opcode_modifier
unsigned int load:1;
unsigned int modrm:1;
unsigned int shortform:1;
unsigned int load:1;
unsigned int modrm:1;
unsigned int shortform:1;
- unsigned int jump:1;
- unsigned int jumpdword:1;
- unsigned int jumpbyte:1;
- unsigned int jumpintersegment:1;
+ unsigned int jump:3;
unsigned int floatmf:1;
unsigned int floatr:1;
unsigned int size:2;
unsigned int checkregsize:1;
unsigned int ignoresize:1;
unsigned int defaultsize:1;
unsigned int floatmf:1;
unsigned int floatr:1;
unsigned int size:2;
unsigned int checkregsize:1;
unsigned int ignoresize:1;
unsigned int defaultsize:1;
+ unsigned int anysize:1;
unsigned int no_bsuf:1;
unsigned int no_wsuf:1;
unsigned int no_lsuf:1;
unsigned int no_bsuf:1;
unsigned int no_wsuf:1;
unsigned int no_lsuf:1;
@@
-661,7
+668,7
@@
typedef struct i386_opcode_modifier
unsigned int no_qsuf:1;
unsigned int no_ldsuf:1;
unsigned int fwait:1;
unsigned int no_qsuf:1;
unsigned int no_ldsuf:1;
unsigned int fwait:1;
- unsigned int isstring:
1
;
+ unsigned int isstring:
2
;
unsigned int regmem:1;
unsigned int bndprefixok:1;
unsigned int notrackprefixok:1;
unsigned int regmem:1;
unsigned int bndprefixok:1;
unsigned int notrackprefixok:1;
@@
-726,8
+733,9
@@
enum operand_instance
{
InstanceNone,
Accum, /* Accumulator %al/%ax/%eax/%rax/%st(0)/%xmm0 */
{
InstanceNone,
Accum, /* Accumulator %al/%ax/%eax/%rax/%st(0)/%xmm0 */
- RegC, /* Register to hold shift count = %cl */
- RegD, /* Register to hold in/out port addr = %dx */
+ RegC, /* %cl / %cx / %ecx / %rcx, e.g. register to hold shift count */
+ RegD, /* %dl / %dx / %edx / %rdx, e.g. register to hold I/O port addr */
+ RegB, /* %bl / %bx / %ebx / %rbx */
};
/* Position of operand_type bits. */
};
/* Position of operand_type bits. */
@@
-769,10
+777,6
@@
enum
Disp64,
/* Register which can be used for base or index in memory operand. */
BaseIndex,
Disp64,
/* Register which can be used for base or index in memory operand. */
BaseIndex,
- /* Absolute address for jump. */
- JumpAbsolute,
- /* String insn operand with fixed es segment */
- EsSeg,
/* BYTE size. */
Byte,
/* WORD size. 2 byte */
/* BYTE size. */
Byte,
/* WORD size. 2 byte */
@@
-793,8
+797,6
@@
enum
Zmmword,
/* Unspecified memory size. */
Unspecified,
Zmmword,
/* Unspecified memory size. */
Unspecified,
- /* Any memory size. */
- Anysize,
/* The number of bits in i386_operand_type. */
OTNum
/* The number of bits in i386_operand_type. */
OTNum
@@
-828,8
+830,6
@@
typedef union i386_operand_type
unsigned int disp32s:1;
unsigned int disp64:1;
unsigned int baseindex:1;
unsigned int disp32s:1;
unsigned int disp64:1;
unsigned int baseindex:1;
- unsigned int jumpabsolute:1;
- unsigned int esseg:1;
unsigned int byte:1;
unsigned int word:1;
unsigned int dword:1;
unsigned int byte:1;
unsigned int word:1;
unsigned int dword:1;
@@
-840,7
+840,6
@@
typedef union i386_operand_type
unsigned int ymmword:1;
unsigned int zmmword:1;
unsigned int unspecified:1;
unsigned int ymmword:1;
unsigned int zmmword:1;
unsigned int unspecified:1;
- unsigned int anysize:1;
#ifdef OTUnused
unsigned int unused:(OTNumOfBits - OTUnused);
#endif
#ifdef OTUnused
unsigned int unused:(OTNumOfBits - OTUnused);
#endif
This page took
0.034187 seconds
and
4
git commands to generate.