diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-05 12:26:32 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-05 12:26:32 +0100 |
| commit | f0883cd465445e9ab07f2e1d33515eda1635fa38 (patch) | |
| tree | 81f8772493a2e9101c9ad487b14f9ef29e5ec7ce | |
| parent | 4081890a941f02315397d05402aaaa085429bedc (diff) | |
| download | box64-f0883cd465445e9ab07f2e1d33515eda1635fa38.tar.gz box64-f0883cd465445e9ab07f2e1d33515eda1635fa38.zip | |
Added REX 99 cd/cqo opcode
| -rwxr-xr-x | src/emu/x64run.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/emu/x64run.c b/src/emu/x64run.c index d7250aad..6889f353 100755 --- a/src/emu/x64run.c +++ b/src/emu/x64run.c @@ -328,10 +328,16 @@ x64emurun: case 0x98: /* CWDE */ if(rex.w) - emu->regs[_AX].q[0] = emu->regs[_AX].sdword[0]; + emu->regs[_AX].sq[0] = emu->regs[_AX].sdword[0]; else emu->regs[_AX].sdword[0] = emu->regs[_AX].sword[0]; break; + case 0x99: /* CDQ */ + if(rex.w) + R_RDX=(R_RAX & 0x8000000000000000L)?0xFFFFFFFFFFFFFFFFL:0x0000000000000000L; + else + R_RDX=(R_EAX & 0x80000000)?0xFFFFFFFFFFFFFFFFL:0x0000000000000000L; + break; case 0xB8: /* MOV EAX,Id */ case 0xB9: /* MOV ECX,Id */ |