Exemplo n.º 1
0
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);
  }
}
Exemplo n.º 2
0
		//Convert DWord to QWord (Sign Extend).
		//
		// RAX <- Sign Extend EAX
		void Ci586CPU::cdqe()
		{
			_emitInstruction( INST_CDQE );
		}
Exemplo n.º 3
0
		//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 );
		}
Exemplo n.º 4
0
		//------------------------------------------------------------------------------
		//Find RAX, starting at ES:[EDI/RDI].
		void Ci586CPU::repne_scasq()
		{
			_emitInstruction( INST_REPNE_SCASQ );
		}
Exemplo n.º 5
0
		//------------------------------------------------------------------------------
		//Read Time-Stamp Counter and Processor ID (New).
		void Ci586CPU::rdtscp()
		{
			_emitInstruction( INST_RDTSCP );
		}
Exemplo n.º 6
0
		//------------------------------------------------------------------------------
		//Repeated find nonmatching QWORDs in ES:[EDI/RDI] and DS:[ESI/RDI].
		void Ci586CPU::repne_cmpsq()
		{
			_emitInstruction( INST_REPNE_CMPSQ );
		}
Exemplo n.º 7
0
		//------------------------------------------------------------------------------
		//Fill ECX/RCX QWORDs at ES:[EDI/RDI] with RAX.
		void Ci586CPU::rep_stosq()
		{
			_emitInstruction( INST_REP_STOSQ );
		}
Exemplo n.º 8
0
		//------------------------------------------------------------------------------
		//Move ECX/RCX QWORDs from DS:[ESI/RSI] to ES:[EDI/RDI].
		void Ci586CPU::rep_movsq()
		{
			_emitInstruction( INST_REP_MOVSQ );
		}
Exemplo n.º 9
0
		//------------------------------------------------------------------------------
		//Load ECX/RCX QWORDs from DS:[ESI/RSI] to RAX.
		void Ci586CPU::rep_lodsq()
		{
			_emitInstruction( INST_REP_LODSQ );
		}
Exemplo n.º 10
0
		//------------------------------------------------------------------------------
		//Move DWord to QWord with sign-extension.
		// @overload
		void Ci586CPU::movsxd( const CGPReg& dst, const CMem& src )
		{
			_emitInstruction( INST_MOVSXD, &dst, &src );
		}