From 01998d4dee577fd44f23714669e9ea398fa0b18b Mon Sep 17 00:00:00 2001 From: kobalicekp Date: Tue, 8 Apr 2014 01:48:44 +0200 Subject: [PATCH] Assembler - Fixed bug when generating LEA having absolute address. --- src/asmjit/x86/x86assembler.cpp | 1 - src/asmjit/x86/x86defs.cpp | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/asmjit/x86/x86assembler.cpp b/src/asmjit/x86/x86assembler.cpp index 10e33df..bcd65f3 100644 --- a/src/asmjit/x86/x86assembler.cpp +++ b/src/asmjit/x86/x86assembler.cpp @@ -3185,7 +3185,6 @@ _EmitX86M: EMIT_BYTE(0x67); } - // Segment override prefix. if (rmMem->hasSegment()) { EMIT_BYTE(x86SegmentPrefix[rmMem->getSegment()]); diff --git a/src/asmjit/x86/x86defs.cpp b/src/asmjit/x86/x86defs.cpp index 43ebe3a..405fd4e 100644 --- a/src/asmjit/x86/x86defs.cpp +++ b/src/asmjit/x86/x86defs.cpp @@ -3146,6 +3146,7 @@ Mem ptr_abs(Ptr pAbs, const X86Reg& index, uint32_t shift, int32_t disp, uint32_ Mem m(NoInit); uint32_t flags = shift << kMemShiftIndex; + if (index.isGp()) flags |= Mem::_getGpdFlags(reinterpret_cast(index)); if (index.isXmm()) flags |= kMemVSibXmm << 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); uint32_t flags = shift << kMemShiftIndex; + if (index.isGp()) flags |= Mem::_getGpdFlags(reinterpret_cast(index)); if (index.isXmm()) flags |= kMemVSibXmm << kMemVSibIndex; if (index.isYmm()) flags |= kMemVSibYmm << kMemVSibIndex;