fcml
1.1.1
|
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 |
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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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 |
Addressing form. 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_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 |
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.
enum fcml_en_access_mode |
enum fcml_en_address_form |
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 |
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.