about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-03-04 20:07:02 +0100
committerptitSeb <sebastien.chev@gmail.com>2021-03-04 20:07:02 +0100
commitad05515b70dfa5c28dbd1552b4bc9df9bf98788c (patch)
tree836c7cc42f9422bdae27797bd71f995b92bd6b9c /src
parente19267dea2ebb5ab4636a9795b0f72ad6f591788 (diff)
downloadbox64-ad05515b70dfa5c28dbd1552b4bc9df9bf98788c.tar.gz
box64-ad05515b70dfa5c28dbd1552b4bc9df9bf98788c.zip
Fixed an issue with GetECommon and REX.b
Diffstat (limited to 'src')
-rwxr-xr-xsrc/emu/x64run_private.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/emu/x64run_private.h b/src/emu/x64run_private.h
index a3c8ef51..69ae17ff 100755
--- a/src/emu/x64run_private.h
+++ b/src/emu/x64run_private.h
@@ -78,7 +78,7 @@ static inline reg64_t* GetECommon(x64emu_t* emu, rex_t rex, uint8_t m)
     if (m<=7) {
         if(m==0x4) {
             uint8_t sib = Fetch8(emu);
-            uintptr_t base = ((sib&0x7)==5)?Fetch32(emu):(emu->regs[(sib&0x7)].q[0]+(rex.b<<3)); // base
+            uintptr_t base = ((sib&0x7)==5)?((uint64_t)(int64_t)Fetch32s(emu)):(emu->regs[(sib&0x7)+(rex.b<<3)].q[0]); // base
             base += (emu->sbiidx[((sib>>3)&7)+(rex.x<<3)]->sq[0] << (sib>>6));
             return (reg64_t*)base;
         } else if (m==0x5) { //disp32
@@ -227,7 +227,7 @@ void UpdateFlags(x64emu_t *emu);
 #define RESET_FLAGS(emu) emu->df = d_none
 
 //void Run67(x64emu_t *emu);
-//void Run0F(x64emu_t *emu);
+int Run0F(x64emu_t *emu);
 //void Run660F(x64emu_t *emu);
 //void Run66D9(x64emu_t *emu);    // x87
 //void Run6766(x64emu_t *emu);