bool Jit::JitSafeMem::PrepareWrite(OpArg &dest, int size) { size_ = size; // If it's an immediate, we can do the write if valid. if (iaddr_ != (u32) -1) { if (ImmValid()) { MemCheckImm(MEM_WRITE); #ifdef _M_IX86 dest = M(Memory::base + (iaddr_ & Memory::MEMVIEW32_MASK & alignMask_)); #else dest = MDisp(RBX, iaddr_ & alignMask_); #endif return true; } else return false; } // Otherwise, we always can do the write (conditionally.) else dest = PrepareMemoryOpArg(MEM_WRITE); return true; }
bool Jit::JitSafeMem::PrepareRead(OpArg &src) { if (iaddr_ != (u32) -1) { if (Memory::IsValidAddress(iaddr_)) { #ifdef _M_IX86 src = M(Memory::base + (iaddr_ & Memory::MEMVIEW32_MASK)); #else src = MDisp(RBX, iaddr_); #endif return true; } else return false; } else src = PrepareMemoryOpArg(); return true; }
bool Jit::JitSafeMem::PrepareWrite(OpArg &dest) { // If it's an immediate, we can do the write if valid. if (iaddr_ != (u32) -1) { if (Memory::IsValidAddress(iaddr_)) { #ifdef _M_IX86 dest = M(Memory::base + (iaddr_ & Memory::MEMVIEW32_MASK)); #else dest = MDisp(RBX, iaddr_); #endif return true; } else return false; } // Otherwise, we always can do the write (conditionally.) else dest = PrepareMemoryOpArg(); return true; }
bool Jit::JitSafeMem::PrepareRead(OpArg &src, int size) { size_ = size; if (iaddr_ != (u32) -1) { if (ImmValid()) { MemCheckImm(MEM_READ); #ifdef _M_IX86 src = M(Memory::base + (iaddr_ & Memory::MEMVIEW32_MASK & alignMask_)); #else src = MDisp(RBX, iaddr_ & alignMask_); #endif return true; } else return false; } else src = PrepareMemoryOpArg(MEM_READ); return true; }