Turnstone Operating System
Loading...
Searching...
No Matches
asm_instructions.h File Reference

assembler instruction functions and types More...

#include <types.h>
#include <compiler/asm_encoder.h>

Classes

struct  asm_instruction_mnemonic_map_t
 
struct  asm_instruction_t
 

Macros

#define ___ASM_INSTRUCTIONS_H   0
 

Typedefs

typedef enum asm_instruction_mnemonic_t asm_instruction_mnemonic_t
 
typedef struct asm_instruction_mnemonic_map_t asm_instruction_mnemonic_map_t
 
typedef enum asm_opcode_t asm_opcode_t
 
typedef enum asm_operand_encode_t asm_operand_encode_t
 
typedef struct asm_instruction_t asm_instruction_t
 

Enumerations

enum  asm_instruction_mnemonic_t {
  ASM_INSTRUCTION_MNEMONIC_NULL , ASM_INSTRUCTION_MNEMONIC_IMM_8 , ASM_INSTRUCTION_MNEMONIC_IMM_16 , ASM_INSTRUCTION_MNEMONIC_IMM_32 ,
  ASM_INSTRUCTION_MNEMONIC_IMM_64 , ASM_INSTRUCTION_MNEMONIC_AL , ASM_INSTRUCTION_MNEMONIC_AX , ASM_INSTRUCTION_MNEMONIC_EAX ,
  ASM_INSTRUCTION_MNEMONIC_RAX , ASM_INSTRUCTION_MNEMONIC_CS , ASM_INSTRUCTION_MNEMONIC_ES , ASM_INSTRUCTION_MNEMONIC_DS ,
  ASM_INSTRUCTION_MNEMONIC_SS , ASM_INSTRUCTION_MNEMONIC_FS , ASM_INSTRUCTION_MNEMONIC_GS , ASM_INSTRUCTION_MNEMONIC_CR0 ,
  ASM_INSTRUCTION_MNEMONIC_CR1 , ASM_INSTRUCTION_MNEMONIC_CR2 , ASM_INSTRUCTION_MNEMONIC_CR3 , ASM_INSTRUCTION_MNEMONIC_CR4 ,
  ASM_INSTRUCTION_MNEMONIC_CR5 , ASM_INSTRUCTION_MNEMONIC_CR6 , ASM_INSTRUCTION_MNEMONIC_CR7 , ASM_INSTRUCTION_MNEMONIC_CR8 ,
  ASM_INSTRUCTION_MNEMONIC_CR9 , ASM_INSTRUCTION_MNEMONIC_CR10 , ASM_INSTRUCTION_MNEMONIC_CR11 , ASM_INSTRUCTION_MNEMONIC_CR12 ,
  ASM_INSTRUCTION_MNEMONIC_CR13 , ASM_INSTRUCTION_MNEMONIC_CR14 , ASM_INSTRUCTION_MNEMONIC_CR15 , ASM_INSTRUCTION_MNEMONIC_DR0 ,
  ASM_INSTRUCTION_MNEMONIC_DR1 , ASM_INSTRUCTION_MNEMONIC_DR2 , ASM_INSTRUCTION_MNEMONIC_DR3 , ASM_INSTRUCTION_MNEMONIC_DR4 ,
  ASM_INSTRUCTION_MNEMONIC_DR5 , ASM_INSTRUCTION_MNEMONIC_DR6 , ASM_INSTRUCTION_MNEMONIC_DR7 , ASM_INSTRUCTION_MNEMONIC_DR8 ,
  ASM_INSTRUCTION_MNEMONIC_DR9 , ASM_INSTRUCTION_MNEMONIC_DR10 , ASM_INSTRUCTION_MNEMONIC_DR11 , ASM_INSTRUCTION_MNEMONIC_DR12 ,
  ASM_INSTRUCTION_MNEMONIC_DR13 , ASM_INSTRUCTION_MNEMONIC_DR14 , ASM_INSTRUCTION_MNEMONIC_DR15 , ASM_INSTRUCTION_MNEMONIC_XMM0 ,
  ASM_INSTRUCTION_MNEMONIC_XMM1 , ASM_INSTRUCTION_MNEMONIC_XMM2 , ASM_INSTRUCTION_MNEMONIC_R_OR_M_8 , ASM_INSTRUCTION_MNEMONIC_R_OR_M_16 ,
  ASM_INSTRUCTION_MNEMONIC_R_OR_M_32 , ASM_INSTRUCTION_MNEMONIC_R_OR_M_64 , ASM_INSTRUCTION_MNEMONIC_R_OR_M_128 , ASM_INSTRUCTION_MNEMONIC_XMM2_OR_MEM_64 ,
  ASM_INSTRUCTION_MNEMONIC_XMM2_OR_MEM_128 , ASM_INSTRUCTION_MNEMONIC_R_8 , ASM_INSTRUCTION_MNEMONIC_R_16 , ASM_INSTRUCTION_MNEMONIC_R_32 ,
  ASM_INSTRUCTION_MNEMONIC_R_64 , ASM_INSTRUCTION_MNEMONIC_R_128 , ASM_INSTRUCTION_MNEMONIC_M_8 , ASM_INSTRUCTION_MNEMONIC_M_16 ,
  ASM_INSTRUCTION_MNEMONIC_M_32 , ASM_INSTRUCTION_MNEMONIC_M_64 , ASM_INSTRUCTION_MNEMONIC_M_128 , ASM_INSTRUCTION_MNEMONIC_M_XX ,
  ASM_INSTRUCTION_MNEMONIC_ADC , ASM_INSTRUCTION_MNEMONIC_ADD , ASM_INSTRUCTION_MNEMONIC_ADDSD , ASM_INSTRUCTION_MNEMONIC_AND ,
  ASM_INSTRUCTION_MNEMONIC_BLENDVPD , ASM_INSTRUCTION_MNEMONIC_BSR , ASM_INSTRUCTION_MNEMONIC_BSWAP , ASM_INSTRUCTION_MNEMONIC_BT ,
  ASM_INSTRUCTION_MNEMONIC_BTC , ASM_INSTRUCTION_MNEMONIC_BTS , ASM_INSTRUCTION_MNEMONIC_CALL , ASM_INSTRUCTION_MNEMONIC_CLD ,
  ASM_INSTRUCTION_MNEMONIC_CLI , ASM_INSTRUCTION_MNEMONIC_CMOVA , ASM_INSTRUCTION_MNEMONIC_CMOVAE , ASM_INSTRUCTION_MNEMONIC_CMOVB ,
  ASM_INSTRUCTION_MNEMONIC_CMOVBE , ASM_INSTRUCTION_MNEMONIC_CMOVC , ASM_INSTRUCTION_MNEMONIC_CMOVE , ASM_INSTRUCTION_MNEMONIC_CMOVG ,
  ASM_INSTRUCTION_MNEMONIC_CMOVGE , ASM_INSTRUCTION_MNEMONIC_CMOVL , ASM_INSTRUCTION_MNEMONIC_CMOVLE , ASM_INSTRUCTION_MNEMONIC_CMOVNA ,
  ASM_INSTRUCTION_MNEMONIC_CMOVNAE , ASM_INSTRUCTION_MNEMONIC_CMOVNB , ASM_INSTRUCTION_MNEMONIC_CMOVNBE , ASM_INSTRUCTION_MNEMONIC_CMOVNC ,
  ASM_INSTRUCTION_MNEMONIC_CMOVNE , ASM_INSTRUCTION_MNEMONIC_CMOVNG , ASM_INSTRUCTION_MNEMONIC_CMOVNGE , ASM_INSTRUCTION_MNEMONIC_CMOVNL ,
  ASM_INSTRUCTION_MNEMONIC_CMOVNLE , ASM_INSTRUCTION_MNEMONIC_CMOVNO , ASM_INSTRUCTION_MNEMONIC_CMOVNP , ASM_INSTRUCTION_MNEMONIC_CMOVNS ,
  ASM_INSTRUCTION_MNEMONIC_CMOVNZ , ASM_INSTRUCTION_MNEMONIC_CMOVO , ASM_INSTRUCTION_MNEMONIC_CMOVP , ASM_INSTRUCTION_MNEMONIC_CMOVPE ,
  ASM_INSTRUCTION_MNEMONIC_CMOVPO , ASM_INSTRUCTION_MNEMONIC_CMOVS , ASM_INSTRUCTION_MNEMONIC_CMOVZ , ASM_INSTRUCTION_MNEMONIC_CMP ,
  ASM_INSTRUCTION_MNEMONIC_COMISD , ASM_INSTRUCTION_MNEMONIC_CPUID , ASM_INSTRUCTION_MNEMONIC_CVTSI2SD , ASM_INSTRUCTION_MNEMONIC_CVTSI2SS ,
  ASM_INSTRUCTION_MNEMONIC_CVTSD2SI , ASM_INSTRUCTION_MNEMONIC_CVTSS2SI , ASM_INSTRUCTION_MNEMONIC_DIV , ASM_INSTRUCTION_MNEMONIC_DIVSD ,
  ASM_INSTRUCTION_MNEMONIC_DIVSS , ASM_INSTRUCTION_MNEMONIC_FCOMIP , ASM_INSTRUCTION_MNEMONIC_FXRSTOR , ASM_INSTRUCTION_MNEMONIC_FXSAVE ,
  ASM_INSTRUCTION_MNEMONIC_HLT , ASM_INSTRUCTION_MNEMONIC_IDIV , ASM_INSTRUCTION_MNEMONIC_IMUL , ASM_INSTRUCTION_MNEMONIC_IN ,
  ASM_INSTRUCTION_MNEMONIC_INT , ASM_INSTRUCTION_MNEMONIC_INVLPG , ASM_INSTRUCTION_MNEMONIC_IRET , ASM_INSTRUCTION_MNEMONIC_IRETD ,
  ASM_INSTRUCTION_MNEMONIC_IRETQ , ASM_INSTRUCTION_MNEMONIC_JA , ASM_INSTRUCTION_MNEMONIC_JAE , ASM_INSTRUCTION_MNEMONIC_JB ,
  ASM_INSTRUCTION_MNEMONIC_JBE , ASM_INSTRUCTION_MNEMONIC_JC , ASM_INSTRUCTION_MNEMONIC_JCXZ , ASM_INSTRUCTION_MNEMONIC_JECXZ ,
  ASM_INSTRUCTION_MNEMONIC_JRCXZ , ASM_INSTRUCTION_MNEMONIC_JE , ASM_INSTRUCTION_MNEMONIC_JG , ASM_INSTRUCTION_MNEMONIC_JGE ,
  ASM_INSTRUCTION_MNEMONIC_JL , ASM_INSTRUCTION_MNEMONIC_JLE , ASM_INSTRUCTION_MNEMONIC_JNA , ASM_INSTRUCTION_MNEMONIC_JNAE ,
  ASM_INSTRUCTION_MNEMONIC_JNB , ASM_INSTRUCTION_MNEMONIC_JNBE , ASM_INSTRUCTION_MNEMONIC_JNC , ASM_INSTRUCTION_MNEMONIC_JNE ,
  ASM_INSTRUCTION_MNEMONIC_JNG , ASM_INSTRUCTION_MNEMONIC_JNGE , ASM_INSTRUCTION_MNEMONIC_JNL , ASM_INSTRUCTION_MNEMONIC_JNLE ,
  ASM_INSTRUCTION_MNEMONIC_JNO , ASM_INSTRUCTION_MNEMONIC_JNP , ASM_INSTRUCTION_MNEMONIC_JNS , ASM_INSTRUCTION_MNEMONIC_JNZ ,
  ASM_INSTRUCTION_MNEMONIC_JO , ASM_INSTRUCTION_MNEMONIC_JP , ASM_INSTRUCTION_MNEMONIC_JPE , ASM_INSTRUCTION_MNEMONIC_JPO ,
  ASM_INSTRUCTION_MNEMONIC_JS , ASM_INSTRUCTION_MNEMONIC_JZ , ASM_INSTRUCTION_MNEMONIC_JMP , ASM_INSTRUCTION_MNEMONIC_LEA ,
  ASM_INSTRUCTION_MNEMONIC_LEAVE , ASM_INSTRUCTION_MNEMONIC_LGDT , ASM_INSTRUCTION_MNEMONIC_LIDT , ASM_INSTRUCTION_MNEMONIC_LRET ,
  ASM_INSTRUCTION_MNEMONIC_LTR , ASM_INSTRUCTION_MNEMONIC_MOV , ASM_INSTRUCTION_MNEMONIC_MOVAPD , ASM_INSTRUCTION_MNEMONIC_MOVAPS ,
  ASM_INSTRUCTION_MNEMONIC_MOVBE , ASM_INSTRUCTION_MNEMONIC_MOVD , ASM_INSTRUCTION_MNEMONIC_MOVDDUP , ASM_INSTRUCTION_MNEMONIC_MOVDQA ,
  ASM_INSTRUCTION_MNEMONIC_MOVDQU , ASM_INSTRUCTION_MNEMONIC_MOVHPD , ASM_INSTRUCTION_MNEMONIC_MOVQ , ASM_INSTRUCTION_MNEMONIC_MOVS ,
  ASM_INSTRUCTION_MNEMONIC_MOVSBW , ASM_INSTRUCTION_MNEMONIC_MOVSBL , ASM_INSTRUCTION_MNEMONIC_MOVSBQ , ASM_INSTRUCTION_MNEMONIC_MOVSWL ,
  ASM_INSTRUCTION_MNEMONIC_MOVSWQ , ASM_INSTRUCTION_MNEMONIC_MOVSLQ , ASM_INSTRUCTION_MNEMONIC_MOVSD , ASM_INSTRUCTION_MNEMONIC_MOVSS ,
  ASM_INSTRUCTION_MNEMONIC_MOVUPS , ASM_INSTRUCTION_MNEMONIC_MOVZBW , ASM_INSTRUCTION_MNEMONIC_MOVZBL , ASM_INSTRUCTION_MNEMONIC_MOVZBQ ,
  ASM_INSTRUCTION_MNEMONIC_MOVZWL , ASM_INSTRUCTION_MNEMONIC_MOVZWQ , ASM_INSTRUCTION_MNEMONIC_MOVZLQ , ASM_INSTRUCTION_MNEMONIC_MUL ,
  ASM_INSTRUCTION_MNEMONIC_MULSD , ASM_INSTRUCTION_MNEMONIC_MULSS , ASM_INSTRUCTION_MNEMONIC_NEG , ASM_INSTRUCTION_MNEMONIC_NOP ,
  ASM_INSTRUCTION_MNEMONIC_NOT , ASM_INSTRUCTION_MNEMONIC_OR , ASM_INSTRUCTION_MNEMONIC_OUT , ASM_INSTRUCTION_MNEMONIC_PADDB ,
  ASM_INSTRUCTION_MNEMONIC_PADDW , ASM_INSTRUCTION_MNEMONIC_PADDD , ASM_INSTRUCTION_MNEMONIC_PADDQ , ASM_INSTRUCTION_MNEMONIC_PALIGNR ,
  ASM_INSTRUCTION_MNEMONIC_PAND , ASM_INSTRUCTION_MNEMONIC_PAUSE , ASM_INSTRUCTION_MNEMONIC_PEXTRB , ASM_INSTRUCTION_MNEMONIC_PEXTRD ,
  ASM_INSTRUCTION_MNEMONIC_PEXTRQ , ASM_INSTRUCTION_MNEMONIC_PINSRB , ASM_INSTRUCTION_MNEMONIC_PINSRD , ASM_INSTRUCTION_MNEMONIC_PINSRQ ,
  ASM_INSTRUCTION_MNEMONIC_PMAXUB , ASM_INSTRUCTION_MNEMONIC_PMAXUD , ASM_INSTRUCTION_MNEMONIC_PMAXUW , ASM_INSTRUCTION_MNEMONIC_PMAXUQ ,
  ASM_INSTRUCTION_MNEMONIC_POP , ASM_INSTRUCTION_MNEMONIC_POPF , ASM_INSTRUCTION_MNEMONIC_POPFD , ASM_INSTRUCTION_MNEMONIC_POPFQ ,
  ASM_INSTRUCTION_MNEMONIC_PUSH , ASM_INSTRUCTION_MNEMONIC_PUSHF , ASM_INSTRUCTION_MNEMONIC_PUSHFD , ASM_INSTRUCTION_MNEMONIC_PUSHFQ ,
  ASM_INSTRUCTION_MNEMONIC_RDMSR , ASM_INSTRUCTION_MNEMONIC_RET , ASM_INSTRUCTION_MNEMONIC_SGDT , ASM_INSTRUCTION_MNEMONIC_SIDT ,
  ASM_INSTRUCTION_MNEMONIC_STI , ASM_INSTRUCTION_MNEMONIC_STR , ASM_INSTRUCTION_MNEMONIC_SUB , ASM_INSTRUCTION_MNEMONIC_UD2 ,
  ASM_INSTRUCTION_MNEMONIC_WRMSR , ASM_INSTRUCTION_MNEMONIC_XOR
}
 
enum  asm_opcode_t {
  ASM_OPCODE_NULL =256 , ASM_OPCODE_REX , ASM_OPCODE_REX_W , ASM_OPCODE_IMM_8 ,
  ASM_OPCODE_IMM_16 , ASM_OPCODE_IMM_32 , ASM_OPCODE_IMM_64 , ASM_OPCODE_AL ,
  ASM_OPCODE_AX , ASM_OPCODE_EAX , ASM_OPCODE_RAX , ASM_OPCODE_CS ,
  ASM_OPCODE_ES , ASM_OPCODE_DS , ASM_OPCODE_SS , ASM_OPCODE_FS ,
  ASM_OPCODE_GS , ASM_OPCODE_R_OR_M_8 , ASM_OPCODE_R_OR_M_16 , ASM_OPCODE_R_OR_M_32 ,
  ASM_OPCODE_R_OR_M_64 , ASM_OPCODE_R_8 , ASM_OPCODE_R_16 , ASM_OPCODE_R_32 ,
  ASM_OPCODE_R_64
}
 
enum  asm_operand_encode_t {
  ASM_INSTRUCTION_OPERAND_ENCODE_NULL , ASM_INSTRUCTION_OPERAND_ENCODE_IMM , ASM_INSTRUCTION_OPERAND_ENCODE_MEM , ASM_INSTRUCTION_OPERAND_ENCODE_MEM_IMM ,
  ASM_INSTRUCTION_OPERAND_ENCODE_RM_REG , ASM_INSTRUCTION_OPERAND_ENCODE_REG_RM
}
 

Functions

asm_instruction_mnemonic_t asm_instruction_mnemonic_get_by_param (asm_instruction_param_t *param, uint8_t operand_size, uint8_t mem_operand_size)
 
const asm_instruction_mnemonic_map_tasm_instruction_mnemonic_get (const char_t *mnemonic_string)
 
const asm_instruction_tasm_instruction_get (const asm_instruction_mnemonic_map_t *map, uint8_t instruction_length, asm_instruction_mnemonic_t mnemonics[5])
 
uint8_t asm_instruction_get_imm_size (const asm_instruction_t *instr)
 

Detailed Description

assembler instruction functions and types

Macro Definition Documentation

◆ ___ASM_INSTRUCTIONS_H

#define ___ASM_INSTRUCTIONS_H   0

prevent duplicate header error macro