Assembler - Fixed bug when generating LEA having absolute address.

This commit is contained in:
kobalicekp
2014-04-08 01:48:44 +02:00
parent f9b94d55a2
commit 01998d4dee
2 changed files with 2 additions and 1 deletions

View File

@@ -3185,7 +3185,6 @@ _EmitX86M:
EMIT_BYTE(0x67); EMIT_BYTE(0x67);
} }
// Segment override prefix. // Segment override prefix.
if (rmMem->hasSegment()) { if (rmMem->hasSegment()) {
EMIT_BYTE(x86SegmentPrefix[rmMem->getSegment()]); EMIT_BYTE(x86SegmentPrefix[rmMem->getSegment()]);

View File

@@ -3146,6 +3146,7 @@ Mem ptr_abs(Ptr pAbs, const X86Reg& index, uint32_t shift, int32_t disp, uint32_
Mem m(NoInit); Mem m(NoInit);
uint32_t flags = shift << kMemShiftIndex; uint32_t flags = shift << kMemShiftIndex;
if (index.isGp()) flags |= Mem::_getGpdFlags(reinterpret_cast<const BaseVar&>(index));
if (index.isXmm()) flags |= kMemVSibXmm << kMemVSibIndex; if (index.isXmm()) flags |= kMemVSibXmm << kMemVSibIndex;
if (index.isYmm()) flags |= kMemVSibYmm << kMemVSibIndex; if (index.isYmm()) flags |= kMemVSibYmm << kMemVSibIndex;
@@ -3160,6 +3161,7 @@ Mem ptr_abs(Ptr pAbs, const X86Var& index, uint32_t shift, int32_t disp, uint32_
Mem m(NoInit); Mem m(NoInit);
uint32_t flags = shift << kMemShiftIndex; uint32_t flags = shift << kMemShiftIndex;
if (index.isGp()) flags |= Mem::_getGpdFlags(reinterpret_cast<const BaseVar&>(index));
if (index.isXmm()) flags |= kMemVSibXmm << kMemVSibIndex; if (index.isXmm()) flags |= kMemVSibXmm << kMemVSibIndex;
if (index.isYmm()) flags |= kMemVSibYmm << kMemVSibIndex; if (index.isYmm()) flags |= kMemVSibYmm << kMemVSibIndex;