about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/emu/x64run66.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/emu/x64run66.c b/src/emu/x64run66.c
index 8f93e27f..689897ce 100644
--- a/src/emu/x64run66.c
+++ b/src/emu/x64run66.c
@@ -33,6 +33,7 @@ int Run66(x64emu_t *emu, rex_t rex, int rep)
     uint8_t tmp8u, tmp8u2;

     int16_t tmp16s;

     uint16_t tmp16u, tmp16u2;

+    int32_t tmp32s;

     int64_t tmp64s;

     uint64_t tmp64u, tmp64u2, tmp64u3;

     reg64_t *oped, *opgd;

@@ -225,6 +226,16 @@ int Run66(x64emu_t *emu, rex_t rex, int rep)
             GW->word[0] = EW->word[0];

         break;

 

+    case 0x8D:                              /* LEA Gw,M */

+        nextop = F8;

+        GETED(0);

+        GETGD;

+        if(rex.w)

+            GD->q[0] = (uint64_t)ED;

+        else

+            GD->word[0] = (uint16_t)(uintptr_t)ED;

+        break;

+

     case 0x90:                              /* NOP */

         break;

 

@@ -540,6 +551,12 @@ int Run66(x64emu_t *emu, rex_t rex, int rep)
     case 0xDD:                              /* x87 opcdes */

         return Run66DD(emu, rex);

 

+    case 0xE8:                              /* CALL Id */

+        tmp32s = F32S; // call is relative

+        Push(emu, R_RIP);

+        R_RIP += tmp32s;

+        break;

+

     case 0xF7:                      /* GRP3 Ew(,Iw) */

         nextop = F8;

         tmp8u = (nextop>>3)&7;