Monero
Loading...
Searching...
No Matches
randomx::AssemblyGeneratorX86 Class Reference

#include <assembly_generator_x86.hpp>

Public Member Functions

void generateProgram (Program &prog)
void generateAsm (SuperscalarProgram &prog)
void generateC (SuperscalarProgram &prog)
void printCode (std::ostream &os)

Private Member Functions

void genAddressReg (Instruction &, const char *)
void genAddressRegDst (Instruction &, int)
int32_t genAddressImm (Instruction &)
void generateCode (Instruction &, int)
void traceint (Instruction &)
void traceflt (Instruction &)
void tracenop (Instruction &)
void h_IADD_RS (Instruction &, int)
void h_IADD_M (Instruction &, int)
void h_ISUB_R (Instruction &, int)
void h_ISUB_M (Instruction &, int)
void h_IMUL_R (Instruction &, int)
void h_IMUL_M (Instruction &, int)
void h_IMULH_R (Instruction &, int)
void h_IMULH_M (Instruction &, int)
void h_ISMULH_R (Instruction &, int)
void h_ISMULH_M (Instruction &, int)
void h_IMUL_RCP (Instruction &, int)
void h_INEG_R (Instruction &, int)
void h_IXOR_R (Instruction &, int)
void h_IXOR_M (Instruction &, int)
void h_IROR_R (Instruction &, int)
void h_IROL_R (Instruction &, int)
void h_ISWAP_R (Instruction &, int)
void h_FSWAP_R (Instruction &, int)
void h_FADD_R (Instruction &, int)
void h_FADD_M (Instruction &, int)
void h_FSUB_R (Instruction &, int)
void h_FSUB_M (Instruction &, int)
void h_FSCAL_R (Instruction &, int)
void h_FMUL_R (Instruction &, int)
void h_FDIV_M (Instruction &, int)
void h_FSQRT_R (Instruction &, int)
void h_CBRANCH (Instruction &, int)
void h_CFROUND (Instruction &, int)
void h_ISTORE (Instruction &, int)
void h_NOP (Instruction &, int)

Private Attributes

std::stringstream asmCode
int registerUsage [RegistersCount]

Static Private Attributes

static InstructionGenerator engine [256]

Member Function Documentation

◆ genAddressImm()

int32_t randomx::AssemblyGeneratorX86::genAddressImm ( Instruction & instr)
private

◆ genAddressReg()

void randomx::AssemblyGeneratorX86::genAddressReg ( Instruction & instr,
const char * reg = "eax" )
private

◆ genAddressRegDst()

void randomx::AssemblyGeneratorX86::genAddressRegDst ( Instruction & instr,
int maskAlign = 8 )
private

◆ generateAsm()

void randomx::AssemblyGeneratorX86::generateAsm ( SuperscalarProgram & prog)

◆ generateC()

void randomx::AssemblyGeneratorX86::generateC ( SuperscalarProgram & prog)

◆ generateCode()

void randomx::AssemblyGeneratorX86::generateCode ( Instruction & instr,
int i )
private

◆ generateProgram()

void randomx::AssemblyGeneratorX86::generateProgram ( Program & prog)

◆ h_CBRANCH()

void randomx::AssemblyGeneratorX86::h_CBRANCH ( Instruction & instr,
int i )
private

◆ h_CFROUND()

void randomx::AssemblyGeneratorX86::h_CFROUND ( Instruction & instr,
int i )
private

◆ h_FADD_M()

void randomx::AssemblyGeneratorX86::h_FADD_M ( Instruction & instr,
int i )
private

◆ h_FADD_R()

void randomx::AssemblyGeneratorX86::h_FADD_R ( Instruction & instr,
int i )
private

◆ h_FDIV_M()

void randomx::AssemblyGeneratorX86::h_FDIV_M ( Instruction & instr,
int i )
private

◆ h_FMUL_R()

void randomx::AssemblyGeneratorX86::h_FMUL_R ( Instruction & instr,
int i )
private

◆ h_FSCAL_R()

void randomx::AssemblyGeneratorX86::h_FSCAL_R ( Instruction & instr,
int i )
private

◆ h_FSQRT_R()

void randomx::AssemblyGeneratorX86::h_FSQRT_R ( Instruction & instr,
int i )
private

◆ h_FSUB_M()

void randomx::AssemblyGeneratorX86::h_FSUB_M ( Instruction & instr,
int i )
private

◆ h_FSUB_R()

void randomx::AssemblyGeneratorX86::h_FSUB_R ( Instruction & instr,
int i )
private

◆ h_FSWAP_R()

void randomx::AssemblyGeneratorX86::h_FSWAP_R ( Instruction & instr,
int i )
private

◆ h_IADD_M()

void randomx::AssemblyGeneratorX86::h_IADD_M ( Instruction & instr,
int i )
private

◆ h_IADD_RS()

void randomx::AssemblyGeneratorX86::h_IADD_RS ( Instruction & instr,
int i )
private

◆ h_IMUL_M()

void randomx::AssemblyGeneratorX86::h_IMUL_M ( Instruction & instr,
int i )
private

◆ h_IMUL_R()

void randomx::AssemblyGeneratorX86::h_IMUL_R ( Instruction & instr,
int i )
private

◆ h_IMUL_RCP()

void randomx::AssemblyGeneratorX86::h_IMUL_RCP ( Instruction & instr,
int i )
private

◆ h_IMULH_M()

void randomx::AssemblyGeneratorX86::h_IMULH_M ( Instruction & instr,
int i )
private

◆ h_IMULH_R()

void randomx::AssemblyGeneratorX86::h_IMULH_R ( Instruction & instr,
int i )
private

◆ h_INEG_R()

void randomx::AssemblyGeneratorX86::h_INEG_R ( Instruction & instr,
int i )
private

◆ h_IROL_R()

void randomx::AssemblyGeneratorX86::h_IROL_R ( Instruction & instr,
int i )
private

◆ h_IROR_R()

void randomx::AssemblyGeneratorX86::h_IROR_R ( Instruction & instr,
int i )
private

◆ h_ISMULH_M()

void randomx::AssemblyGeneratorX86::h_ISMULH_M ( Instruction & instr,
int i )
private

◆ h_ISMULH_R()

void randomx::AssemblyGeneratorX86::h_ISMULH_R ( Instruction & instr,
int i )
private

◆ h_ISTORE()

void randomx::AssemblyGeneratorX86::h_ISTORE ( Instruction & instr,
int i )
private

◆ h_ISUB_M()

void randomx::AssemblyGeneratorX86::h_ISUB_M ( Instruction & instr,
int i )
private

◆ h_ISUB_R()

void randomx::AssemblyGeneratorX86::h_ISUB_R ( Instruction & instr,
int i )
private

◆ h_ISWAP_R()

void randomx::AssemblyGeneratorX86::h_ISWAP_R ( Instruction & instr,
int i )
private

◆ h_IXOR_M()

void randomx::AssemblyGeneratorX86::h_IXOR_M ( Instruction & instr,
int i )
private

◆ h_IXOR_R()

void randomx::AssemblyGeneratorX86::h_IXOR_R ( Instruction & instr,
int i )
private

◆ h_NOP()

void randomx::AssemblyGeneratorX86::h_NOP ( Instruction & instr,
int i )
private

◆ printCode()

void randomx::AssemblyGeneratorX86::printCode ( std::ostream & os)
inline

◆ traceflt()

void randomx::AssemblyGeneratorX86::traceflt ( Instruction & instr)
private

◆ traceint()

void randomx::AssemblyGeneratorX86::traceint ( Instruction & instr)
private

◆ tracenop()

void randomx::AssemblyGeneratorX86::tracenop ( Instruction & instr)
private

Member Data Documentation

◆ asmCode

std::stringstream randomx::AssemblyGeneratorX86::asmCode
private

◆ engine

InstructionGenerator randomx::AssemblyGeneratorX86::engine
staticprivate

◆ registerUsage

int randomx::AssemblyGeneratorX86::registerUsage[RegistersCount]
private

The documentation for this class was generated from the following files: