From 004c360720c0acd50fb6b6a3211df53d0a193e93 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Thu, 4 Mar 2021 17:55:13 +0100 Subject: Added 70..7F Jcc opcoces --- src/emu/x64run.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) (limited to 'src') diff --git a/src/emu/x64run.c b/src/emu/x64run.c index d29d6d65..9421c249 100755 --- a/src/emu/x64run.c +++ b/src/emu/x64run.c @@ -194,6 +194,93 @@ x64emurun: emu->regs[tmp8u].q[0] = Pop(emu); break; + #define GOCOND(B, PREFIX, CONDITIONAL) \ + case B+0x0: \ + PREFIX \ + if(ACCESS_FLAG(F_OF)) \ + CONDITIONAL \ + break; \ + case B+0x1: \ + PREFIX \ + if(!ACCESS_FLAG(F_OF)) \ + CONDITIONAL \ + break; \ + case B+0x2: \ + PREFIX \ + if(ACCESS_FLAG(F_CF)) \ + CONDITIONAL \ + break; \ + case B+0x3: \ + PREFIX \ + if(!ACCESS_FLAG(F_CF)) \ + CONDITIONAL \ + break; \ + case B+0x4: \ + PREFIX \ + if(ACCESS_FLAG(F_ZF)) \ + CONDITIONAL \ + break; \ + case B+0x5: \ + PREFIX \ + if(!ACCESS_FLAG(F_ZF)) \ + CONDITIONAL \ + break; \ + case B+0x6: \ + PREFIX \ + if((ACCESS_FLAG(F_ZF) || ACCESS_FLAG(F_CF))) \ + CONDITIONAL \ + break; \ + case B+0x7: \ + PREFIX \ + if(!(ACCESS_FLAG(F_ZF) || ACCESS_FLAG(F_CF))) \ + CONDITIONAL \ + break; \ + case B+0x8: \ + PREFIX \ + if(ACCESS_FLAG(F_SF)) \ + CONDITIONAL \ + break; \ + case B+0x9: \ + PREFIX \ + if(!ACCESS_FLAG(F_SF)) \ + CONDITIONAL \ + break; \ + case B+0xA: \ + PREFIX \ + if(ACCESS_FLAG(F_PF)) \ + CONDITIONAL \ + break; \ + case B+0xB: \ + PREFIX \ + if(!ACCESS_FLAG(F_PF)) \ + CONDITIONAL \ + break; \ + case B+0xC: \ + PREFIX \ + if(ACCESS_FLAG(F_SF) != ACCESS_FLAG(F_OF)) \ + CONDITIONAL \ + break; \ + case B+0xD: \ + PREFIX \ + if(ACCESS_FLAG(F_SF) == ACCESS_FLAG(F_OF)) \ + CONDITIONAL \ + break; \ + case B+0xE: \ + PREFIX \ + if(ACCESS_FLAG(F_ZF) || (ACCESS_FLAG(F_SF) != ACCESS_FLAG(F_OF))) \ + CONDITIONAL \ + break; \ + case B+0xF: \ + PREFIX \ + if(!ACCESS_FLAG(F_ZF) && (ACCESS_FLAG(F_SF) == ACCESS_FLAG(F_OF))) \ + CONDITIONAL \ + break; + GOCOND(0x70 + , tmp8s = F8S; CHECK_FLAGS(emu); + , R_RIP += tmp8s; + ) /* Jxx Ib */ + #undef GOCOND + case 0x81: /* GRP Ed,Id */ case 0x83: /* GRP Ed,Ib */ nextop = F8; -- cgit 1.4.1