void X86Compiler::_emitJcc(uint32_t code, const Label* label, uint32_t hint) { if (hint == kCondHintNone) { _emitInstruction(code, label); } else { Imm imm(hint); _emitInstruction(code, label, &imm); } }
//Convert DWord to QWord (Sign Extend). // // RAX <- Sign Extend EAX void Ci586CPU::cdqe() { _emitInstruction( INST_CDQE ); }
//Compares the 128-bit value in RDX:RAX with the memory operand (X64). // // If the values are equal, then this instruction stores the 128-bit value // in RCX:RBX into the memory operand and sets the zero flag. Otherwise, // this instruction copies the 128-bit memory operand into the RDX:RAX // registers and clears the zero flag. void Ci586CPU::cmpxchg16b( const CMem& dst ) { _emitInstruction( INST_CMPXCHG16B, &dst ); }
//------------------------------------------------------------------------------ //Find RAX, starting at ES:[EDI/RDI]. void Ci586CPU::repne_scasq() { _emitInstruction( INST_REPNE_SCASQ ); }
//------------------------------------------------------------------------------ //Read Time-Stamp Counter and Processor ID (New). void Ci586CPU::rdtscp() { _emitInstruction( INST_RDTSCP ); }
//------------------------------------------------------------------------------ //Repeated find nonmatching QWORDs in ES:[EDI/RDI] and DS:[ESI/RDI]. void Ci586CPU::repne_cmpsq() { _emitInstruction( INST_REPNE_CMPSQ ); }
//------------------------------------------------------------------------------ //Fill ECX/RCX QWORDs at ES:[EDI/RDI] with RAX. void Ci586CPU::rep_stosq() { _emitInstruction( INST_REP_STOSQ ); }
//------------------------------------------------------------------------------ //Move ECX/RCX QWORDs from DS:[ESI/RSI] to ES:[EDI/RDI]. void Ci586CPU::rep_movsq() { _emitInstruction( INST_REP_MOVSQ ); }
//------------------------------------------------------------------------------ //Load ECX/RCX QWORDs from DS:[ESI/RSI] to RAX. void Ci586CPU::rep_lodsq() { _emitInstruction( INST_REP_LODSQ ); }
//------------------------------------------------------------------------------ //Move DWord to QWord with sign-extension. // @overload void Ci586CPU::movsxd( const CGPReg& dst, const CMem& src ) { _emitInstruction( INST_MOVSXD, &dst, &src ); }