Add an immediate type for values up to 256 bits

This commit is contained in:
Pierre Pronchery 2018-09-10 22:17:48 +02:00
parent ff3f310ca0
commit 4ab03a0290

View File

@ -58,9 +58,10 @@ typedef enum _AsmArchOperandType
AOT_NONE = 0x0,
AOT_CONSTANT = 0x1, /* flags | 0 | size | value */
AOT_IMMEDIATE = 0x2, /* flags | 0 | size | refers */
AOT_REGISTER = 0x3, /* flags | 0 | size | id */
AOT_DREGISTER = 0x4, /* flags | dsize | rsize | id */
AOT_DREGISTER2 = 0x5 /* flags | did | rsize | id */
AOT_IMMEDIATE256= 0x3, /* flags | 0 | size | refers */
AOT_REGISTER = 0x4, /* flags | 0 | size | id */
AOT_DREGISTER = 0x5, /* flags | dsize | rsize | id */
AOT_DREGISTER2 = 0x6 /* flags | did | rsize | id */
} AsmArchOperandType;
/* displacement */
@ -117,6 +118,11 @@ typedef enum _AsmArchOperandType
| ((flags) << AOD_FLAGS) \
| ((size) << AOD_SIZE) \
| ((type) << AOD_VALUE))
# define AO_IMMEDIATE256(flags, size, type) \
((AOT_IMMEDIATE256 << AOD_TYPE) \
| ((flags) << AOD_FLAGS) \
| ((size) << AOD_SIZE) \
| ((type) << AOD_VALUE))
# define AO_REGISTER(flags, size, id) \
((AOT_REGISTER << AOD_TYPE) \
| ((flags) << AOD_FLAGS) \
@ -162,6 +168,14 @@ typedef struct _AsmArchOperand
int negative;
} immediate;
/* AOT_IMMEDIATE256 */
struct
{
char const * name; /* optional */
uint8_t value[32];
int negative;
} immediate256;
/* AOT_REGISTER */
struct
{