From c50a4e282a7394eb4e728a35cb27d9cf21156312 Mon Sep 17 00:00:00 2001 From: Dan <46821332+nsadeveloper789@users.noreply.github.com> Date: Mon, 2 Aug 2021 12:33:50 -0400 Subject: [PATCH] GP-1058: Added another test case. --- .../exec/trace/TracePcodeEmulatorTest.java | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/pcode/exec/trace/TracePcodeEmulatorTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/pcode/exec/trace/TracePcodeEmulatorTest.java index 619ef81d4f..568c3ad71f 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/pcode/exec/trace/TracePcodeEmulatorTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/pcode/exec/trace/TracePcodeEmulatorTest.java @@ -329,7 +329,6 @@ public class TracePcodeEmulatorTest extends AbstractGhidraHeadlessIntegrationTes @Test public void testBRDS() throws Throwable { try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("Test", "Toy:BE:64:default")) { - Assembler asm = Assemblers.getAssembler(tb.trace.getFixedProgramView(0)); TraceThread thread = initTrace(tb, List.of( "pc = 0x00400000;", @@ -668,4 +667,42 @@ public class TracePcodeEmulatorTest extends AbstractGhidraHeadlessIntegrationTes TraceSleighUtils.evaluate("XMM0", tb.trace, 1, thread, 0)); } } + + /** + * ( Test x86's SAR instruction + * + *
+ * This test hits an INT_SRIGHT p-code op where the two input operands have differing sizes.
+ */
+ @Test
+ public void testSAR() throws Throwable {
+ try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("Test", "x86:LE:64:default")) {
+ Register pc = tb.language.getProgramCounter();
+
+ TraceThread thread = initTrace(tb,
+ List.of(
+ "RIP = 0x00400000;",
+ "RSP = 0x00110000;",
+ "RAX = 0x7fffffff;",
+ "RCX = 4;"),
+ List.of(
+ "SAR EAX, CL"));
+
+ TracePcodeEmulator emu = new TracePcodeEmulator(tb.trace, 0);
+ PcodeThread