From 4b86945fff971768ad4d4542e0eef45ce7c4161b Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Thu, 4 Mar 2021 20:35:56 +0100 Subject: Added REX C7 MOV opcode --- src/emu/x64run.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/emu/x64run.c b/src/emu/x64run.c index 5c7045e6..f2d4e452 100755 --- a/src/emu/x64run.c +++ b/src/emu/x64run.c @@ -55,6 +55,7 @@ int Run(x64emu_t *emu, int step) #define F16 *(uint16_t*)(R_RIP+=2, R_RIP-2) #define F32 *(uint32_t*)(R_RIP+=4, R_RIP-4) #define F32S *(int32_t*)(R_RIP+=4, R_RIP-4) +#define F32S64 (uint64_t)(int64_t)F32S #define F64 *(uint64_t*)(R_RIP+=8, R_RIP-8) #define F64S *(int64_t*)(R_RIP+=8, R_RIP-8) #define PK(a) *(uint8_t*)(R_RIP+a) @@ -132,7 +133,7 @@ x64emurun: break; \ case B+5: \ if(rex.w) \ - R_RAX = OP##64(emu, R_RAX, (uint64_t)(int64_t)F32S); \ + R_RAX = OP##64(emu, R_RAX, F32S64); \ else \ R_EAX = OP##32(emu, R_EAX, F32); \ break; @@ -189,7 +190,7 @@ x64emurun: break; case 0x3D: if(rex.w) - cmp64(emu, R_RAX, (uint64_t)(int64_t)F32S); + cmp64(emu, R_RAX, F32S64); else cmp32(emu, R_EAX, F32); break; @@ -453,6 +454,15 @@ x64emurun: STEP break; + case 0xC7: /* MOV Ed,Id */ + nextop = F8; + GETED; + if(rex.w) + ED->q[0] = F32S64; + else + ED->dword[0] = F32; + break; + case 0xCC: /* INT 3 */ x64Int3(emu); if(emu->quit) goto fini; -- cgit 1.4.1