diff --git a/bdshemu/bdshemu.c b/bdshemu/bdshemu.c index 0504c90..73bab73 100644 --- a/bdshemu/bdshemu.c +++ b/bdshemu/bdshemu.c @@ -89,7 +89,7 @@ enum #define GET_FLAG(ctx, flg) (!!((ctx)->Registers.RegFlags & (flg))) #define SET_FLAG(ctx, flg, val) ((ctx)->Registers.RegFlags = (val) ? ((ctx)->Registers.RegFlags | flg) : \ ((ctx)->Registers.RegFlags & ~(flg))) -#define SET_FLAGS(ctx, dst, src1, src2, fm) ShemuSetFlags(ctx, dst.Value.Qwords[0], src.Value.Qwords[0], \ +#define SET_FLAGS(ctx, dst, src1, src2, fm) ShemuSetFlags(ctx, dst.Value.Qwords[0], src1.Value.Qwords[0], \ src2.Value.Qwords[0], dst.Size, fm) #define SHELLBMP(ctx) ((ctx)->Intbuf) @@ -318,6 +318,15 @@ ShemuSetFlags( Src1 = ND_TRIM(Size, Src1); Src2 = ND_TRIM(Size, Src2); + if (FlagsMode == FM_SHL || FlagsMode == FM_SHR || FlagsMode == FM_SAR) + { + // Shift with 0 count does not affect flags. + if (Src2 == 0) + { + return; + } + } + // PF set if the first bytes has an even number of 1 bits. if ((pfArr[Dst & 0xF] + pfArr[(Dst >> 4) & 0xF]) % 2 == 0) { @@ -357,7 +366,7 @@ ShemuSetFlags( else if (FM_SHL == FlagsMode) { // CF is the last bit shifted out of the destination. - if (ND_GET_BIT(Src1, (Size * 8ULL) - Src2)) + if (ND_GET_BIT((Size * 8ULL) - Src2, Src1)) { Context->Registers.RegFlags |= NDR_RFLAG_CF; } @@ -368,7 +377,7 @@ ShemuSetFlags( if (Src2 == 1) { - if (ND_GET_BIT(Size * 8ULL - 1, Dst) ^ ND_GET_BIT(Src1, (Size * 8ULL) - Src2)) + if (ND_GET_BIT(Size * 8ULL - 1, Dst) ^ ND_GET_BIT(Size * 8ULL - Src2, Src1)) { Context->Registers.RegFlags |= NDR_RFLAG_OF; } @@ -381,7 +390,7 @@ ShemuSetFlags( else if (FM_SHR == FlagsMode) { // CF is the last bit shifted out of the destination. - if (ND_GET_BIT(Src1, Src2 - 1)) + if (ND_GET_BIT(Src2 - 1, Src1)) { Context->Registers.RegFlags |= NDR_RFLAG_CF; } @@ -405,7 +414,7 @@ ShemuSetFlags( else if (FM_SAR == FlagsMode) { // CF is the last bit shifted out of the destination. - if (ND_GET_BIT(Src1, Src2 - 1)) + if (ND_GET_BIT(Src2 - 1, Src1)) { Context->Registers.RegFlags |= NDR_RFLAG_CF; } @@ -1282,7 +1291,10 @@ ShemuSetOperandValue( case ND_REG_MMX: Context->MmxRegisters[op->Info.Register.Reg] = Value->Value.Qwords[0]; // Only log these when they're written. - shemu_printf(Context, " MM%d = 0x%016llx\n", op->Info.Register.Reg, Value->Value.Qwords[0]); + if (Context->Options & SHEMU_OPT_TRACE_EMULATION) + { + shemu_printf(Context, " MM%d = 0x%016llx\n", op->Info.Register.Reg, Value->Value.Qwords[0]); + } break; case ND_REG_SSE: @@ -1290,14 +1302,19 @@ ShemuSetOperandValue( Value->Value.Bytes, op->Size); // Only log these when they're written. - shemu_printf(Context, - " %cMM%d (HI_32) = 0x%016llx%016llx%016llx%016llx\n", - op->Size == 16 ? 'X' : op->Size == 32 ? 'Y' : 'Z', op->Info.Register.Reg, - Value->Value.Qwords[7], Value->Value.Qwords[6], Value->Value.Qwords[5], Value->Value.Qwords[4]); - shemu_printf(Context, - " %cMM%d (LO_32) = 0x%016llx%016llx%016llx%016llx\n", - op->Size == 16 ? 'X' : op->Size == 32 ? 'Y' : 'Z', op->Info.Register.Reg, - Value->Value.Qwords[3], Value->Value.Qwords[2], Value->Value.Qwords[1], Value->Value.Qwords[0]); + if (Context->Options & SHEMU_OPT_TRACE_EMULATION) + { + shemu_printf(Context, + " %cMM%d (HI_32) = 0x%016llx%016llx%016llx%016llx\n", + op->Size == 16 ? 'X' : op->Size == 32 ? 'Y' : 'Z', op->Info.Register.Reg, + Value->Value.Qwords[7], Value->Value.Qwords[6], + Value->Value.Qwords[5], Value->Value.Qwords[4]); + shemu_printf(Context, + " %cMM%d (LO_32) = 0x%016llx%016llx%016llx%016llx\n", + op->Size == 16 ? 'X' : op->Size == 32 ? 'Y' : 'Z', op->Info.Register.Reg, + Value->Value.Qwords[3], Value->Value.Qwords[2], + Value->Value.Qwords[1], Value->Value.Qwords[0]); + } break; case ND_REG_RIP: diff --git a/bdshemu_test/basic/test_64_flags.result b/bdshemu_test/basic/test_64_flags.result index 49cce25..64095da 100644 --- a/bdshemu_test/basic/test_64_flags.result +++ b/bdshemu_test/basic/test_64_flags.result @@ -56,13 +56,13 @@ Emulating: 0x0000000000200019 SUB eax, 0x00000001 RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 - RIP = 0x000000000020001c RFLAGS = 0x0000000000000286 + RIP = 0x000000000020001c RFLAGS = 0x0000000000000287 Emulating: 0x000000000020001c SBB eax, 0x00000000 - RAX = 0x00000000ffffffff RCX = 0x0000000000000000 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RAX = 0x00000000fffffffe RCX = 0x0000000000000000 RDX = 0x0000000000000000 RBX = 0x0000000000000000 RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 - RIP = 0x000000000020001f RFLAGS = 0x0000000000000286 + RIP = 0x000000000020001f RFLAGS = 0x0000000000000282 Emulating: 0x000000000020001f XOR eax, eax RAX = 0x0000000000000000 RCX = 0x0000000000000000 RDX = 0x0000000000000000 RBX = 0x0000000000000000 RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 @@ -152,7 +152,7 @@ Emulating: 0x000000000020004e SHL eax, 0x18 RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 - RIP = 0x0000000000200051 RFLAGS = 0x0000000000000286 + RIP = 0x0000000000200051 RFLAGS = 0x0000000000000287 Emulating: 0x0000000000200051 XOR eax, eax RAX = 0x0000000000000000 RCX = 0x0000000000000000 RDX = 0x0000000000000000 RBX = 0x0000000000000000 RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 @@ -170,6 +170,6 @@ Emulating: 0x0000000000200058 SHR eax, 0x18 RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 - RIP = 0x000000000020005b RFLAGS = 0x0000000000000206 + RIP = 0x000000000020005b RFLAGS = 0x0000000000000207 Emulating: 0x000000000020005b RETN Emulation terminated with status 0x00000002, flags: 0x0, 0 NOPs diff --git a/bdshemu_test/basic/test_64_flags2 b/bdshemu_test/basic/test_64_flags2 new file mode 100644 index 0000000..23a877c Binary files /dev/null and b/bdshemu_test/basic/test_64_flags2 differ diff --git a/bdshemu_test/basic/test_64_flags2.asm b/bdshemu_test/basic/test_64_flags2.asm new file mode 100644 index 0000000..6331735 --- /dev/null +++ b/bdshemu_test/basic/test_64_flags2.asm @@ -0,0 +1,30 @@ + bits 64 + + mov rax, 1 + mov rcx, 2 + sub rax, rcx ; cy + mov rax, 2 + mov rcx, 1 + sub rax, rcx ; nc + mov rax, 0xffffffffffffffff + mov rcx, 1 + sub rax, rcx ; nc + mov rax, 1 + mov rcx, 0xffffffffffffffff + sub rax, rcx ; cy + mov rax, 0x7fffffffffffffff + mov rcx, 0x8000000000000000 + sub rax, rcx ; cy + mov rax, 0x8000000000000000 + mov rcx, 0x7fffffffffffffff + sub rax, rcx ; nc + + mov rax, 1 + mov rcx, 2 + add rcx, rcx ; nc + + mov rax, 0xffffffffffffffff + mov rcx, 2 + add rax, rcx ; cy + + retn \ No newline at end of file diff --git a/bdshemu_test/basic/test_64_flags2.result b/bdshemu_test/basic/test_64_flags2.result new file mode 100644 index 0000000..e7f10b7 --- /dev/null +++ b/bdshemu_test/basic/test_64_flags2.result @@ -0,0 +1,151 @@ + RAX = 0x0000000000000000 RCX = 0x0000000000000000 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200000 RFLAGS = 0x0000000000000202 +Emulating: 0x0000000000200000 MOV eax, 0x00000001 + RAX = 0x0000000000000001 RCX = 0x0000000000000000 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200005 RFLAGS = 0x0000000000000202 +Emulating: 0x0000000000200005 MOV ecx, 0x00000002 + RAX = 0x0000000000000001 RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020000a RFLAGS = 0x0000000000000202 +Emulating: 0x000000000020000a SUB rax, rcx + RAX = 0xffffffffffffffff RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020000d RFLAGS = 0x0000000000000287 +Emulating: 0x000000000020000d MOV eax, 0x00000002 + RAX = 0x0000000000000002 RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200012 RFLAGS = 0x0000000000000287 +Emulating: 0x0000000000200012 MOV ecx, 0x00000001 + RAX = 0x0000000000000002 RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200017 RFLAGS = 0x0000000000000287 +Emulating: 0x0000000000200017 SUB rax, rcx + RAX = 0x0000000000000001 RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020001a RFLAGS = 0x0000000000000202 +Emulating: 0x000000000020001a MOV rax, 0xffffffffffffffff + RAX = 0xffffffffffffffff RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200021 RFLAGS = 0x0000000000000202 +Emulating: 0x0000000000200021 MOV ecx, 0x00000001 + RAX = 0xffffffffffffffff RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200026 RFLAGS = 0x0000000000000202 +Emulating: 0x0000000000200026 SUB rax, rcx + RAX = 0xfffffffffffffffe RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200029 RFLAGS = 0x0000000000000282 +Emulating: 0x0000000000200029 MOV eax, 0x00000001 + RAX = 0x0000000000000001 RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020002e RFLAGS = 0x0000000000000282 +Emulating: 0x000000000020002e MOV rcx, 0xffffffffffffffff + RAX = 0x0000000000000001 RCX = 0xffffffffffffffff RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200035 RFLAGS = 0x0000000000000282 +Emulating: 0x0000000000200035 SUB rax, rcx + RAX = 0x0000000000000002 RCX = 0xffffffffffffffff RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200038 RFLAGS = 0x0000000000000203 +Emulating: 0x0000000000200038 MOV rax, 0x7fffffffffffffff + RAX = 0x7fffffffffffffff RCX = 0xffffffffffffffff RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200042 RFLAGS = 0x0000000000000203 +Emulating: 0x0000000000200042 MOV rcx, 0x8000000000000000 + RAX = 0x7fffffffffffffff RCX = 0x8000000000000000 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020004c RFLAGS = 0x0000000000000203 +Emulating: 0x000000000020004c SUB rax, rcx + RAX = 0xffffffffffffffff RCX = 0x8000000000000000 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020004f RFLAGS = 0x0000000000000a87 +Emulating: 0x000000000020004f MOV rax, 0x8000000000000000 + RAX = 0x8000000000000000 RCX = 0x8000000000000000 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200059 RFLAGS = 0x0000000000000a87 +Emulating: 0x0000000000200059 MOV rcx, 0x7fffffffffffffff + RAX = 0x8000000000000000 RCX = 0x7fffffffffffffff RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200063 RFLAGS = 0x0000000000000a87 +Emulating: 0x0000000000200063 SUB rax, rcx + RAX = 0x0000000000000001 RCX = 0x7fffffffffffffff RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200066 RFLAGS = 0x0000000000000a02 +Emulating: 0x0000000000200066 MOV eax, 0x00000001 + RAX = 0x0000000000000001 RCX = 0x7fffffffffffffff RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020006b RFLAGS = 0x0000000000000a02 +Emulating: 0x000000000020006b MOV ecx, 0x00000002 + RAX = 0x0000000000000001 RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200070 RFLAGS = 0x0000000000000a02 +Emulating: 0x0000000000200070 ADD rcx, rcx + RAX = 0x0000000000000001 RCX = 0x0000000000000004 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200073 RFLAGS = 0x0000000000000202 +Emulating: 0x0000000000200073 MOV rax, 0xffffffffffffffff + RAX = 0xffffffffffffffff RCX = 0x0000000000000004 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020007a RFLAGS = 0x0000000000000202 +Emulating: 0x000000000020007a MOV ecx, 0x00000002 + RAX = 0xffffffffffffffff RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020007f RFLAGS = 0x0000000000000202 +Emulating: 0x000000000020007f ADD rax, rcx + RAX = 0x0000000000000001 RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200082 RFLAGS = 0x0000000000000203 +Emulating: 0x0000000000200082 RETN +Emulation terminated with status 0x00000002, flags: 0x0, 0 NOPs diff --git a/bdshemu_test/basic/test_64_flags3 b/bdshemu_test/basic/test_64_flags3 new file mode 100644 index 0000000..651091a Binary files /dev/null and b/bdshemu_test/basic/test_64_flags3 differ diff --git a/bdshemu_test/basic/test_64_flags3.asm b/bdshemu_test/basic/test_64_flags3.asm new file mode 100644 index 0000000..81cc5d8 --- /dev/null +++ b/bdshemu_test/basic/test_64_flags3.asm @@ -0,0 +1,74 @@ + bits 64 + + xor eax, eax + + mov eax, 0xAA + mov cl, 0 + shr eax, cl + shl eax, cl + sar eax, cl + + mov eax, 0xAA + mov cl, 255 + shr eax, cl + + mov eax, 0xAA + mov cl, 255 + sar eax, cl + + mov eax, 0xAA + mov cl, 255 + shl eax, cl + + xor eax, eax + + mov eax, 0x0 + mov cl, 1 + shr eax, cl + mov eax, 0x1 + shr eax, cl + mov eax, 0xff + shr eax, cl + + mov eax, 0x0 + mov cl, 2 + shr eax, cl + mov eax, 0x1 + shr eax, cl + mov eax, 0xff + shr eax, cl + + mov eax, 0x0 + mov cl, 1 + sar eax, cl + mov eax, 0x1 + sar eax, cl + mov eax, 0xff + sar eax, cl + + mov eax, 0x0 + mov cl, 2 + sar eax, cl + mov eax, 0x1 + sar eax, cl + mov eax, 0xff + sar eax, cl + + mov eax, 0x0 + mov cl, 1 + shl eax, cl + mov eax, 0x80 + shl eax, cl + mov eax, 0xff + shl eax, cl + + mov eax, 0x0 + mov cl, 2 + shl eax, cl + mov eax, 0x80 + shl eax, cl + mov eax, 0xff + shl eax, cl + + + retn \ No newline at end of file diff --git a/bdshemu_test/basic/test_64_flags3.result b/bdshemu_test/basic/test_64_flags3.result new file mode 100644 index 0000000..4b9e26a --- /dev/null +++ b/bdshemu_test/basic/test_64_flags3.result @@ -0,0 +1,355 @@ + RAX = 0x0000000000000000 RCX = 0x0000000000000000 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200000 RFLAGS = 0x0000000000000202 +Emulating: 0x0000000000200000 XOR eax, eax + RAX = 0x0000000000000000 RCX = 0x0000000000000000 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200002 RFLAGS = 0x0000000000000246 +Emulating: 0x0000000000200002 MOV eax, 0x000000aa + RAX = 0x00000000000000aa RCX = 0x0000000000000000 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200007 RFLAGS = 0x0000000000000246 +Emulating: 0x0000000000200007 MOV cl, 0x00 + RAX = 0x00000000000000aa RCX = 0x0000000000000000 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200009 RFLAGS = 0x0000000000000246 +Emulating: 0x0000000000200009 SHR eax, cl + RAX = 0x00000000000000aa RCX = 0x0000000000000000 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020000b RFLAGS = 0x0000000000000246 +Emulating: 0x000000000020000b SHL eax, cl + RAX = 0x00000000000000aa RCX = 0x0000000000000000 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020000d RFLAGS = 0x0000000000000246 +Emulating: 0x000000000020000d SAR eax, cl + RAX = 0x00000000000000aa RCX = 0x0000000000000000 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020000f RFLAGS = 0x0000000000000246 +Emulating: 0x000000000020000f MOV eax, 0x000000aa + RAX = 0x00000000000000aa RCX = 0x0000000000000000 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200014 RFLAGS = 0x0000000000000246 +Emulating: 0x0000000000200014 MOV cl, 0xff + RAX = 0x00000000000000aa RCX = 0x00000000000000ff RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200016 RFLAGS = 0x0000000000000246 +Emulating: 0x0000000000200016 SHR eax, cl + RAX = 0x0000000000000000 RCX = 0x00000000000000ff RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200018 RFLAGS = 0x0000000000000246 +Emulating: 0x0000000000200018 MOV eax, 0x000000aa + RAX = 0x00000000000000aa RCX = 0x00000000000000ff RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020001d RFLAGS = 0x0000000000000246 +Emulating: 0x000000000020001d MOV cl, 0xff + RAX = 0x00000000000000aa RCX = 0x00000000000000ff RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020001f RFLAGS = 0x0000000000000246 +Emulating: 0x000000000020001f SAR eax, cl + RAX = 0x0000000000000000 RCX = 0x00000000000000ff RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200021 RFLAGS = 0x0000000000000246 +Emulating: 0x0000000000200021 MOV eax, 0x000000aa + RAX = 0x00000000000000aa RCX = 0x00000000000000ff RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200026 RFLAGS = 0x0000000000000246 +Emulating: 0x0000000000200026 MOV cl, 0xff + RAX = 0x00000000000000aa RCX = 0x00000000000000ff RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200028 RFLAGS = 0x0000000000000246 +Emulating: 0x0000000000200028 SHL eax, cl + RAX = 0x0000000000000000 RCX = 0x00000000000000ff RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020002a RFLAGS = 0x0000000000000247 +Emulating: 0x000000000020002a XOR eax, eax + RAX = 0x0000000000000000 RCX = 0x00000000000000ff RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020002c RFLAGS = 0x0000000000000246 +Emulating: 0x000000000020002c MOV eax, 0x00000000 + RAX = 0x0000000000000000 RCX = 0x00000000000000ff RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200031 RFLAGS = 0x0000000000000246 +Emulating: 0x0000000000200031 MOV cl, 0x01 + RAX = 0x0000000000000000 RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200033 RFLAGS = 0x0000000000000246 +Emulating: 0x0000000000200033 SHR eax, cl + RAX = 0x0000000000000000 RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200035 RFLAGS = 0x0000000000000246 +Emulating: 0x0000000000200035 MOV eax, 0x00000001 + RAX = 0x0000000000000001 RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020003a RFLAGS = 0x0000000000000246 +Emulating: 0x000000000020003a SHR eax, cl + RAX = 0x0000000000000000 RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020003c RFLAGS = 0x0000000000000247 +Emulating: 0x000000000020003c MOV eax, 0x000000ff + RAX = 0x00000000000000ff RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200041 RFLAGS = 0x0000000000000247 +Emulating: 0x0000000000200041 SHR eax, cl + RAX = 0x000000000000007f RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200043 RFLAGS = 0x0000000000000203 +Emulating: 0x0000000000200043 MOV eax, 0x00000000 + RAX = 0x0000000000000000 RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200048 RFLAGS = 0x0000000000000203 +Emulating: 0x0000000000200048 MOV cl, 0x02 + RAX = 0x0000000000000000 RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020004a RFLAGS = 0x0000000000000203 +Emulating: 0x000000000020004a SHR eax, cl + RAX = 0x0000000000000000 RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020004c RFLAGS = 0x0000000000000246 +Emulating: 0x000000000020004c MOV eax, 0x00000001 + RAX = 0x0000000000000001 RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200051 RFLAGS = 0x0000000000000246 +Emulating: 0x0000000000200051 SHR eax, cl + RAX = 0x0000000000000000 RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200053 RFLAGS = 0x0000000000000246 +Emulating: 0x0000000000200053 MOV eax, 0x000000ff + RAX = 0x00000000000000ff RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200058 RFLAGS = 0x0000000000000246 +Emulating: 0x0000000000200058 SHR eax, cl + RAX = 0x000000000000003f RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020005a RFLAGS = 0x0000000000000207 +Emulating: 0x000000000020005a MOV eax, 0x00000000 + RAX = 0x0000000000000000 RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020005f RFLAGS = 0x0000000000000207 +Emulating: 0x000000000020005f MOV cl, 0x01 + RAX = 0x0000000000000000 RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200061 RFLAGS = 0x0000000000000207 +Emulating: 0x0000000000200061 SAR eax, cl + RAX = 0x0000000000000000 RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200063 RFLAGS = 0x0000000000000246 +Emulating: 0x0000000000200063 MOV eax, 0x00000001 + RAX = 0x0000000000000001 RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200068 RFLAGS = 0x0000000000000246 +Emulating: 0x0000000000200068 SAR eax, cl + RAX = 0x0000000000000000 RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020006a RFLAGS = 0x0000000000000247 +Emulating: 0x000000000020006a MOV eax, 0x000000ff + RAX = 0x00000000000000ff RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020006f RFLAGS = 0x0000000000000247 +Emulating: 0x000000000020006f SAR eax, cl + RAX = 0x000000000000007f RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200071 RFLAGS = 0x0000000000000203 +Emulating: 0x0000000000200071 MOV eax, 0x00000000 + RAX = 0x0000000000000000 RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200076 RFLAGS = 0x0000000000000203 +Emulating: 0x0000000000200076 MOV cl, 0x02 + RAX = 0x0000000000000000 RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200078 RFLAGS = 0x0000000000000203 +Emulating: 0x0000000000200078 SAR eax, cl + RAX = 0x0000000000000000 RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020007a RFLAGS = 0x0000000000000246 +Emulating: 0x000000000020007a MOV eax, 0x00000001 + RAX = 0x0000000000000001 RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020007f RFLAGS = 0x0000000000000246 +Emulating: 0x000000000020007f SAR eax, cl + RAX = 0x0000000000000000 RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200081 RFLAGS = 0x0000000000000246 +Emulating: 0x0000000000200081 MOV eax, 0x000000ff + RAX = 0x00000000000000ff RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200086 RFLAGS = 0x0000000000000246 +Emulating: 0x0000000000200086 SAR eax, cl + RAX = 0x000000000000003f RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200088 RFLAGS = 0x0000000000000207 +Emulating: 0x0000000000200088 MOV eax, 0x00000000 + RAX = 0x0000000000000000 RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020008d RFLAGS = 0x0000000000000207 +Emulating: 0x000000000020008d MOV cl, 0x01 + RAX = 0x0000000000000000 RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020008f RFLAGS = 0x0000000000000207 +Emulating: 0x000000000020008f SHL eax, cl + RAX = 0x0000000000000000 RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200091 RFLAGS = 0x0000000000000246 +Emulating: 0x0000000000200091 MOV eax, 0x00000080 + RAX = 0x0000000000000080 RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200096 RFLAGS = 0x0000000000000246 +Emulating: 0x0000000000200096 SHL eax, cl + RAX = 0x0000000000000100 RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x0000000000200098 RFLAGS = 0x0000000000000206 +Emulating: 0x0000000000200098 MOV eax, 0x000000ff + RAX = 0x00000000000000ff RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020009d RFLAGS = 0x0000000000000206 +Emulating: 0x000000000020009d SHL eax, cl + RAX = 0x00000000000001fe RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x000000000020009f RFLAGS = 0x0000000000000202 +Emulating: 0x000000000020009f MOV eax, 0x00000000 + RAX = 0x0000000000000000 RCX = 0x0000000000000001 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x00000000002000a4 RFLAGS = 0x0000000000000202 +Emulating: 0x00000000002000a4 MOV cl, 0x02 + RAX = 0x0000000000000000 RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x00000000002000a6 RFLAGS = 0x0000000000000202 +Emulating: 0x00000000002000a6 SHL eax, cl + RAX = 0x0000000000000000 RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x00000000002000a8 RFLAGS = 0x0000000000000246 +Emulating: 0x00000000002000a8 MOV eax, 0x00000080 + RAX = 0x0000000000000080 RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x00000000002000ad RFLAGS = 0x0000000000000246 +Emulating: 0x00000000002000ad SHL eax, cl + RAX = 0x0000000000000200 RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x00000000002000af RFLAGS = 0x0000000000000206 +Emulating: 0x00000000002000af MOV eax, 0x000000ff + RAX = 0x00000000000000ff RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x00000000002000b4 RFLAGS = 0x0000000000000206 +Emulating: 0x00000000002000b4 SHL eax, cl + RAX = 0x00000000000003fc RCX = 0x0000000000000002 RDX = 0x0000000000000000 RBX = 0x0000000000000000 + RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 + R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 + R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 + RIP = 0x00000000002000b6 RFLAGS = 0x0000000000000206 +Emulating: 0x00000000002000b6 RETN +Emulation terminated with status 0x00000002, flags: 0x0, 0 NOPs diff --git a/bdshemu_test/basic/test_64_incdec.result b/bdshemu_test/basic/test_64_incdec.result index 33d2c1d..ea43bc0 100644 --- a/bdshemu_test/basic/test_64_incdec.result +++ b/bdshemu_test/basic/test_64_incdec.result @@ -38,7 +38,7 @@ Emulating: 0x0000000000200008 INC eax RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 R8 = 0x0000000000000000 R9 = 0x0000000000000000 R10 = 0x0000000000000000 R11 = 0x0000000000000000 R12 = 0x0000000000000000 R13 = 0x0000000000000000 R14 = 0x0000000000000000 R15 = 0x0000000000000000 - RIP = 0x000000000020000a RFLAGS = 0x0000000000000a87 + RIP = 0x000000000020000a RFLAGS = 0x0000000000000287 Emulating: 0x000000000020000a INC eax RAX = 0x0000000000000000 RCX = 0x0000000000000000 RDX = 0x0000000000000000 RBX = 0x0000000000000000 RSP = 0x0000000000101000 RBP = 0x0000000000000000 RSI = 0x0000000000000000 RDI = 0x0000000000000000 diff --git a/pybddisasm/setup.py b/pybddisasm/setup.py index 02b9bea..aa9613d 100644 --- a/pybddisasm/setup.py +++ b/pybddisasm/setup.py @@ -12,7 +12,7 @@ from setuptools import find_packages, setup, Command, Extension, Distribution from codecs import open VERSION = (0, 1, 3) -LIBRARY_VERSION = (1, 31, 7) +LIBRARY_VERSION = (1, 31, 8) LIBRARY_INSTRUX_SIZE = 864 packages = ['pybddisasm']