OpcodeDispatcher: fuse xlat address

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
This commit is contained in:
Alyssa Rosenzweig 2024-05-31 13:17:25 -04:00
parent ee4bee4fef
commit b0b4ad2083

View File

@ -2969,9 +2969,8 @@ void OpDispatchBuilder::XLATOp(OpcodeArgs) {
OrderedNode* Src = MakeSegmentAddress(X86State::REG_RBX, Op->Flags, X86Tables::DecodeFlags::FLAG_DS_PREFIX);
OrderedNode* Offset = LoadGPRRegister(X86State::REG_RAX, 1);
Src = _Add(OpSize::i64Bit, Src, Offset);
auto Res = _LoadMemAutoTSO(GPRClass, 1, Src, 1);
AddressMode A = {.Base = Src, .Index = Offset, .AddrSize = 8};
auto Res = _LoadMemAutoTSO(GPRClass, 1, A, 1);
StoreGPRRegister(X86State::REG_RAX, Res, 1);
}