diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-06-07 10:08:06 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-06-07 10:08:06 +0200 |
| commit | d5b286c050833acec49dba33ad6b92b4196f1b45 (patch) | |
| tree | 813786a2caa24a2581f7a5b8e62ef35505a87542 /src | |
| parent | 1f23848e2590916aa54d902903328efeadf60106 (diff) | |
| download | box64-d5b286c050833acec49dba33ad6b92b4196f1b45.tar.gz box64-d5b286c050833acec49dba33ad6b92b4196f1b45.zip | |
Added 66 F0 81 opcodes
Diffstat (limited to 'src')
| -rw-r--r-- | src/emu/modrm.h | 1 | ||||
| -rw-r--r-- | src/emu/x64run66f0.c | 7 |
2 files changed, 5 insertions, 3 deletions
diff --git a/src/emu/modrm.h b/src/emu/modrm.h index 7f5c77ce..75df27e7 100644 --- a/src/emu/modrm.h +++ b/src/emu/modrm.h @@ -1,6 +1,7 @@ #define F8 *(uint8_t*)(R_RIP++) #define F8S *(int8_t*)(R_RIP++) #define F16 *(uint16_t*)(R_RIP+=2, R_RIP-2) +#define F16S *(int16_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 diff --git a/src/emu/x64run66f0.c b/src/emu/x64run66f0.c index 50f159f8..305b450b 100644 --- a/src/emu/x64run66f0.c +++ b/src/emu/x64run66f0.c @@ -42,10 +42,11 @@ int Run66F0(x64emu_t *emu, rex_t rex) switch(opcode) { - case 0x83: /* GRP Ed,Ib */ + case 0x81: /* GRP Ew,Iw */ + case 0x83: /* GRP Ew,Ib */ nextop = F8; - GETED(1); - tmp64s = F8S; + GETED((opcode==0x83)?1:2); + tmp64s = (opcode==0x83)?(F8S):(F16S); tmp64u = (uint64_t)tmp64s; #ifdef DYNAREC if(rex.w) { |