fcml
1.2.2
|
Definitions of common structures used by FCML components. More...
Go to the source code of this file.
Classes | |
struct | fcml_st_register |
Structure describes x86_64 register. More... | |
struct | fcml_st_condition |
Defines instruction's condition. More... | |
struct | fcml_st_nullable_size_flags |
Nullable wrapper for mask of size flags. More... | |
struct | fcml_st_far_pointer |
Representation of far pointer operand. More... | |
struct | fcml_st_offset |
Absolute offset. More... | |
struct | fcml_st_effective_address |
Effective address. More... | |
struct | fcml_st_segment_selector |
Describes segment register. More... | |
struct | fcml_st_address |
Generic memory addressing operator. More... | |
struct | fcml_st_operand_decorators |
Container for operand decorators. More... | |
struct | fcml_st_operand |
Instruction operand. More... | |
struct | fcml_st_instruction |
Generic instruction model. More... | |
struct | fcml_st_instruction_code |
An encoded instruction. More... | |
struct | fcml_st_entry_point |
Describes address of an instruction code. More... | |
Macros | |
#define | FCML_OPERANDS_COUNT 5 |
Maximal number of the instruction operands. More... | |
#define | FCML_INSTRUCTION_SIZE 15 |
Maximal number of bytes instruction can use. More... | |
#define | FCML_OPCODES_NUM 3 |
Number of opcode bytes. More... | |
#define | FCML_PREFIX_LOCK 0x0001 |
LOCK prefix (0xF0) | |
#define | FCML_PREFIX_REPNE 0x0002 |
REPNE prefix (0xF2) | |
#define | FCML_PREFIX_REPNZ FCML_PREFIX_REPNE |
REPNZ prefix (0xF2) | |
#define | FCML_PREFIX_REP 0x0004 |
REP prefix (0xF3) | |
#define | FCML_PREFIX_REPE FCML_PREFIX_REP |
REPE prefix (0xF3) | |
#define | FCML_PREFIX_REPZ FCML_PREFIX_REP |
REPZ prefix (0xF3) | |
#define | FCML_PREFIX_XACQUIRE 0x0008 |
XACQUIRE prefix (0xF2) | |
#define | FCML_PREFIX_XRELEASE 0x0010 |
XRELEASE prefix (0xF3) | |
#define | FCML_PREFIX_BRANCH_HINT 0x0020 |
branch hint (0x2E) (SSE2 extension) | |
#define | FCML_PREFIX_NOBRANCH_HINT 0x0040 |
nobranch hint (0x3E) (SSE2 extension) | |
#define | FCML_REG_AL 0 |
#define | FCML_REG_AX 0 |
#define | FCML_REG_EAX 0 |
#define | FCML_REG_RAX 0 |
#define | FCML_REG_MM0 0 |
#define | FCML_REG_XMM0 0 |
#define | FCML_REG_YMM0 0 |
#define | FCML_REG_ZMM0 0 |
#define | FCML_REG_CL 1 |
#define | FCML_REG_CX 1 |
#define | FCML_REG_ECX 1 |
#define | FCML_REG_RCX 1 |
#define | FCML_REG_MM1 1 |
#define | FCML_REG_XMM1 1 |
#define | FCML_REG_YMM1 1 |
#define | FCML_REG_ZMM1 1 |
#define | FCML_REG_DL 2 |
#define | FCML_REG_DX 2 |
#define | FCML_REG_EDX 2 |
#define | FCML_REG_RDX 2 |
#define | FCML_REG_MM2 2 |
#define | FCML_REG_XMM2 2 |
#define | FCML_REG_YMM2 2 |
#define | FCML_REG_ZMM2 2 |
#define | FCML_REG_BL 3 |
#define | FCML_REG_BX 3 |
#define | FCML_REG_EBX 3 |
#define | FCML_REG_RBX 3 |
#define | FCML_REG_MM3 3 |
#define | FCML_REG_XMM3 3 |
#define | FCML_REG_YMM3 3 |
#define | FCML_REG_ZMM3 3 |
#define | FCML_REG_AH 4 |
#define | FCML_REG_SP 4 |
#define | FCML_REG_SPL 4 |
#define | FCML_REG_ESP 4 |
#define | FCML_REG_RSP 4 |
#define | FCML_REG_MM4 4 |
#define | FCML_REG_XMM4 4 |
#define | FCML_REG_YMM4 4 |
#define | FCML_REG_ZMM4 4 |
#define | FCML_REG_CH 5 |
#define | FCML_REG_BP 5 |
#define | FCML_REG_BPL 5 |
#define | FCML_REG_EBP 5 |
#define | FCML_REG_RBP 5 |
#define | FCML_REG_MM5 5 |
#define | FCML_REG_XMM5 5 |
#define | FCML_REG_YMM5 5 |
#define | FCML_REG_ZMM5 5 |
#define | FCML_REG_DH 6 |
#define | FCML_REG_SI 6 |
#define | FCML_REG_SIL 6 |
#define | FCML_REG_ESI 6 |
#define | FCML_REG_RSI 6 |
#define | FCML_REG_MM6 6 |
#define | FCML_REG_XMM6 6 |
#define | FCML_REG_YMM6 6 |
#define | FCML_REG_ZMM6 6 |
#define | FCML_REG_BH 7 |
#define | FCML_REG_DI 7 |
#define | FCML_REG_DIL 7 |
#define | FCML_REG_EDI 7 |
#define | FCML_REG_RDI 7 |
#define | FCML_REG_MM7 7 |
#define | FCML_REG_XMM7 7 |
#define | FCML_REG_YMM7 7 |
#define | FCML_REG_ZMM7 7 |
#define | FCML_REG_R8L 8 |
#define | FCML_REG_R8W 8 |
#define | FCML_REG_R8D 8 |
#define | FCML_REG_R8 8 |
#define | FCML_REG_XMM8 8 |
#define | FCML_REG_YMM8 8 |
#define | FCML_REG_ZMM8 8 |
#define | FCML_REG_R9L 9 |
#define | FCML_REG_R9W 9 |
#define | FCML_REG_R9D 9 |
#define | FCML_REG_R9 9 |
#define | FCML_REG_XMM9 9 |
#define | FCML_REG_YMM9 9 |
#define | FCML_REG_ZMM9 9 |
#define | FCML_REG_R10L 10 |
#define | FCML_REG_R10W 10 |
#define | FCML_REG_R10D 10 |
#define | FCML_REG_R10 10 |
#define | FCML_REG_XMM10 10 |
#define | FCML_REG_YMM10 10 |
#define | FCML_REG_ZMM10 10 |
#define | FCML_REG_R11L 11 |
#define | FCML_REG_R11W 11 |
#define | FCML_REG_R11D 11 |
#define | FCML_REG_R11 11 |
#define | FCML_REG_XMM11 11 |
#define | FCML_REG_YMM11 11 |
#define | FCML_REG_ZMM11 11 |
#define | FCML_REG_R12L 12 |
#define | FCML_REG_R12W 12 |
#define | FCML_REG_R12D 12 |
#define | FCML_REG_R12 12 |
#define | FCML_REG_XMM12 12 |
#define | FCML_REG_YMM12 12 |
#define | FCML_REG_ZMM12 12 |
#define | FCML_REG_R13L 13 |
#define | FCML_REG_R13W 13 |
#define | FCML_REG_R13D 13 |
#define | FCML_REG_R13 13 |
#define | FCML_REG_XMM13 13 |
#define | FCML_REG_YMM13 13 |
#define | FCML_REG_ZMM13 13 |
#define | FCML_REG_R14L 14 |
#define | FCML_REG_R14W 14 |
#define | FCML_REG_R14D 14 |
#define | FCML_REG_R14 14 |
#define | FCML_REG_XMM14 14 |
#define | FCML_REG_YMM14 14 |
#define | FCML_REG_ZMM14 14 |
#define | FCML_REG_R15L 15 |
#define | FCML_REG_R15W 15 |
#define | FCML_REG_R15D 15 |
#define | FCML_REG_R15 15 |
#define | FCML_REG_XMM15 15 |
#define | FCML_REG_YMM15 15 |
#define | FCML_REG_ZMM15 15 |
#define | FCML_REG_XMM16 16 |
#define | FCML_REG_YMM16 16 |
#define | FCML_REG_ZMM16 16 |
#define | FCML_REG_XMM17 17 |
#define | FCML_REG_YMM17 17 |
#define | FCML_REG_ZMM17 17 |
#define | FCML_REG_XMM18 18 |
#define | FCML_REG_YMM18 18 |
#define | FCML_REG_ZMM18 18 |
#define | FCML_REG_XMM19 19 |
#define | FCML_REG_YMM19 19 |
#define | FCML_REG_ZMM19 19 |
#define | FCML_REG_XMM20 20 |
#define | FCML_REG_YMM20 20 |
#define | FCML_REG_ZMM20 20 |
#define | FCML_REG_XMM21 21 |
#define | FCML_REG_YMM21 21 |
#define | FCML_REG_ZMM21 21 |
#define | FCML_REG_XMM22 22 |
#define | FCML_REG_YMM22 22 |
#define | FCML_REG_ZMM22 22 |
#define | FCML_REG_XMM23 23 |
#define | FCML_REG_YMM23 23 |
#define | FCML_REG_ZMM23 23 |
#define | FCML_REG_XMM24 24 |
#define | FCML_REG_YMM24 24 |
#define | FCML_REG_ZMM24 24 |
#define | FCML_REG_XMM25 25 |
#define | FCML_REG_YMM25 25 |
#define | FCML_REG_ZMM25 25 |
#define | FCML_REG_XMM26 26 |
#define | FCML_REG_YMM26 26 |
#define | FCML_REG_ZMM26 26 |
#define | FCML_REG_XMM27 27 |
#define | FCML_REG_YMM27 27 |
#define | FCML_REG_ZMM27 27 |
#define | FCML_REG_XMM28 28 |
#define | FCML_REG_YMM28 28 |
#define | FCML_REG_ZMM28 28 |
#define | FCML_REG_XMM29 29 |
#define | FCML_REG_YMM29 29 |
#define | FCML_REG_ZMM29 29 |
#define | FCML_REG_XMM30 30 |
#define | FCML_REG_YMM30 30 |
#define | FCML_REG_ZMM30 30 |
#define | FCML_REG_XMM31 31 |
#define | FCML_REG_YMM31 31 |
#define | FCML_REG_ZMM31 31 |
#define | FCML_REG_ES 0 |
#define | FCML_REG_CS 1 |
#define | FCML_REG_SS 2 |
#define | FCML_REG_DS 3 |
#define | FCML_REG_FS 4 |
#define | FCML_REG_GS 5 |
#define | FCML_REG_ST0 0 |
#define | FCML_REG_ST1 1 |
#define | FCML_REG_ST2 2 |
#define | FCML_REG_ST3 3 |
#define | FCML_REG_ST4 4 |
#define | FCML_REG_ST5 5 |
#define | FCML_REG_ST6 6 |
#define | FCML_REG_ST7 7 |
#define | FCML_REG_CR0 0 |
#define | FCML_REG_CR2 2 |
#define | FCML_REG_CR3 3 |
#define | FCML_REG_CR4 4 |
#define | FCML_REG_CR8 8 |
#define | FCML_REG_DR0 0 |
#define | FCML_REG_DR1 1 |
#define | FCML_REG_DR2 2 |
#define | FCML_REG_DR3 3 |
#define | FCML_REG_DR4 4 |
#define | FCML_REG_DR5 5 |
#define | FCML_REG_DR6 6 |
#define | FCML_REG_DR7 7 |
#define | FCML_REG_K0 0 |
#define | FCML_REG_K1 1 |
#define | FCML_REG_K2 2 |
#define | FCML_REG_K3 3 |
#define | FCML_REG_K4 4 |
#define | FCML_REG_K5 5 |
#define | FCML_REG_K6 6 |
#define | FCML_REG_K7 7 |
#define | FCML_DS_UNDEF 0 |
#define | FCML_DS_8 8 |
#define | FCML_DS_16 16 |
#define | FCML_DS_32 32 |
#define | FCML_DS_64 64 |
#define | FCML_DS_128 128 |
#define | FCML_DS_256 256 |
#define | FCML_DS_512 512 |
#define | FCML_OS_UNDEFINED 0 |
#define | FCML_OS_BYTE 8 |
#define | FCML_OS_WORD 16 |
#define | FCML_OS_DWORD 32 |
#define | FCML_OS_FWORD 48 |
#define | FCML_OS_QWORD 64 |
#define | FCML_OS_MWORD 64 |
#define | FCML_OS_TBYTE 80 |
#define | FCML_OS_OWORD 128 |
#define | FCML_OS_XWORD 128 |
#define | FCML_OS_YWORD 256 |
#define | FCML_OS_ZWORD 512 |
#define | FCML_TT_NONE 0 |
#define | FCML_TT_FV 1 |
#define | FCML_TT_HV 2 |
#define | FCML_TT_FVM 3 /* Full Mem */ |
#define | FCML_TT_T1S 4 |
#define | FCML_TT_T1F 5 |
#define | FCML_TT_T2 6 |
#define | FCML_TT_T4 7 |
#define | FCML_TT_T8 8 |
#define | FCML_TT_HVM 9 |
#define | FCML_TT_QVM 10 |
#define | FCML_TT_OVM 11 |
#define | FCML_TT_M128 12 |
#define | FCML_TT_DUP 13 |
#define | FCML_TT_T1x4 14 /* Tuple1_4X */ |
#define | FCML_ER_RN_SAE 0 |
#define | FCML_ER_RD_SAE 1 |
#define | FCML_ER_RU_SAE 2 |
#define | FCML_ER_RZ_SAE 3 |
#define | FCML_NUMBER_OF_CONDITIONS 8 |
Number of supported condition types. More... | |
#define | FCML_EN_ASF_ANY 0x00 |
#define | FCML_EN_ASF_16 0x01 |
#define | FCML_EN_ASF_32 0x02 |
#define | FCML_EN_ASF_64 0x04 |
#define | FCML_EN_ASF_ALL FCML_EN_ASF_16 | FCML_EN_ASF_32 | FCML_EN_ASF_64 |
Typedefs | |
typedef enum fcml_en_operating_mode | fcml_en_operating_mode |
Supported processor operating modes. | |
typedef fcml_uint16_t | fcml_hints |
Type used for storing instruction and operand hint masks. More... | |
typedef fcml_uint16_t | fcml_prefixes |
Type for explicit instruction prefixes bit mask. | |
typedef fcml_int64_t | fcml_ip |
General instruction pointer holder. | |
typedef enum fcml_en_register | fcml_en_register |
Register type. More... | |
typedef struct fcml_st_register | fcml_st_register |
Structure describes x86_64 register. | |
typedef enum fcml_en_condition_type | fcml_en_condition_type |
Condition type. More... | |
typedef struct fcml_st_condition | fcml_st_condition |
Defines instruction's condition. | |
typedef struct fcml_st_nullable_size_flags | fcml_st_nullable_size_flags |
Nullable wrapper for mask of size flags. | |
typedef enum fcml_en_access_mode | fcml_en_access_mode |
Operand access mode. | |
typedef struct fcml_st_far_pointer | fcml_st_far_pointer |
Representation of far pointer operand. | |
typedef enum fcml_en_address_form | fcml_en_effective_address_form |
Memory addressing using ModR/M field. More... | |
typedef struct fcml_st_offset | fcml_st_offset |
Absolute offset. | |
typedef struct fcml_st_effective_address | fcml_st_effective_address |
Effective address. | |
typedef struct fcml_st_segment_selector | fcml_st_segment_selector |
Describes segment register. | |
typedef struct fcml_st_address | fcml_st_address |
Generic memory addressing operator. | |
typedef enum fcml_en_embeeded_rounding_control | fcml_en_embeeded_rounding_control |
Rounding mode. | |
typedef struct fcml_st_operand_decorators | fcml_st_operand_decorators |
Container for operand decorators. More... | |
typedef enum fcml_en_operand_type | fcml_en_operand_type |
Supported operand types. | |
typedef enum fcml_en_operand_hints | fcml_en_operand_hints |
Operand hints. More... | |
typedef struct fcml_st_operand | fcml_st_operand |
Instruction operand. More... | |
typedef enum fcml_en_instruction_hints | fcml_en_instruction_hints |
Instruction level hints. More... | |
typedef struct fcml_st_instruction | fcml_st_instruction |
Generic instruction model. More... | |
typedef struct fcml_st_instruction_code | fcml_st_instruction_code |
An encoded instruction. | |
typedef struct fcml_st_entry_point | fcml_st_entry_point |
Describes address of an instruction code. | |
Definitions of common structures used by FCML components.
#define FCML_INSTRUCTION_SIZE 15 |
Maximal number of bytes instruction can use.
#define FCML_NUMBER_OF_CONDITIONS 8 |
Number of supported condition types.
#define FCML_OPCODES_NUM 3 |
Number of opcode bytes.
#define FCML_OPERANDS_COUNT 5 |
Maximal number of the instruction operands.
typedef enum fcml_en_condition_type fcml_en_condition_type |
Condition type.
Every conditional instruction has an appropriate condition type set. Following enumeration defines all supported types.
typedef enum fcml_en_address_form fcml_en_effective_address_form |
Memory addressing using ModR/M field.
Addressing form. Distinguish between two types of addressing forms: effective addressing and explicit absolute offset.
typedef enum fcml_en_instruction_hints fcml_en_instruction_hints |
Instruction level hints.
Set of the hints that can be only defined on the level of the whole instruction. They can not be used with operands.
typedef enum fcml_en_operand_hints fcml_en_operand_hints |
Operand hints.
Hints dedicated for instruction operands.
typedef enum fcml_en_register fcml_en_register |
Register type.
Every register is represented as an integer value and it's register type. This enumeration provides all supported register types.
typedef fcml_uint16_t fcml_hints |
Type used for storing instruction and operand hint masks.
typedef struct fcml_st_instruction fcml_st_instruction |
Generic instruction model.
Generic instruction model (GIM) is a common structure used to describe instruction in a common way used by FCML assembler and disassembler.
typedef struct fcml_st_operand fcml_st_operand |
Instruction operand.
Structure represents one instruction operand.
typedef struct fcml_st_operand_decorators fcml_st_operand_decorators |
Container for operand decorators.
enum fcml_en_access_mode |
enum fcml_en_address_form |
Memory addressing using ModR/M field.
Addressing form. Distinguish between two types of addressing forms: effective addressing and explicit absolute offset.
Condition type.
Every conditional instruction has an appropriate condition type set. Following enumeration defines all supported types.
Instruction level hints.
Set of the hints that can be only defined on the level of the whole instruction. They can not be used with operands.
Operand hints.
Hints dedicated for instruction operands.
enum fcml_en_operand_type |
Supported operand types.
enum fcml_en_register |
Register type.
Every register is represented as an integer value and it's register type. This enumeration provides all supported register types.