about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/emu/x64run.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/emu/x64run.c b/src/emu/x64run.c
index a15fec13..03d40a1d 100755
--- a/src/emu/x64run.c
+++ b/src/emu/x64run.c
@@ -427,6 +427,28 @@ x64emurun:
                 test32(emu, R_EAX, F32);
             break;
 
+        case 0xAB:                      /* (REP) STOSD */
+            if(rex.w)
+                tmp8s = ACCESS_FLAG(F_DF)?-4:+4;
+            else
+                tmp8s = ACCESS_FLAG(F_DF)?-8:+8;
+            tmp64u = (rep)?R_RCX:1L;
+            if((rex.w))
+                while(tmp64u) {
+                    *(uint32_t*)R_RDI = R_EAX;
+                    R_EDI += tmp8s;
+                    --tmp64u;
+                }
+            else
+                while(tmp64u) {
+                    *(uint64_t*)R_RDI = R_RAX;
+                    R_EDI += tmp8s;
+                    --tmp64u;
+                }
+            if(rep)
+                R_RCX = tmp64u;
+            break;
+
         case 0xB8:                      /* MOV EAX,Id */
         case 0xB9:                      /* MOV ECX,Id */
         case 0xBA:                      /* MOV EDX,Id */