@Test
	public void testMov_w_mW1_W0() throws Throwable {
		try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("Test", "dsPIC33F:LE:24:default")) {
			Address textStart = tb.language.getDefaultSpace().getAddress(0x000100, true);
			// TODO: Where is the stack typically on this arch?
			Address stackStart = tb.language.getDefaultDataSpace().getAddress(0, true);
			TraceThread thread = initTrace(tb,
				new AddressRangeImpl(textStart, 0x200),
				new AddressRangeImpl(stackStart, 1), """
						PC = 0x000100;
						W1 = 0x0800;
						*[ram]:2 0x000800:3 = 0x1234;
						""",
				List.of(
					"mov.w [W1], W0"));

			BytesTracePcodeEmulator emu = new BytesTracePcodeEmulator(tb.host, 0);
			PcodeThread<byte[]> emuThread = emu.newThread(thread.getPath());
			emuThread.stepInstruction();

			try (Transaction tx = tb.startTransaction()) {
				emu.writeDown(tb.host, 1, 1);
			}

			assertEquals(BigInteger.valueOf(0x000102),
				TraceSleighUtils.evaluate("PC", tb.trace, 1, thread, 0));
			assertEquals(BigInteger.valueOf(0x1234),
				TraceSleighUtils.evaluate("W0", tb.trace, 1, thread, 0));
			assertEquals(BigInteger.valueOf(0x0800),
				TraceSleighUtils.evaluate("W1", tb.trace, 1, thread, 0));
		}
	}
Test that unimplemented instructions (as opposed to instructions with no semantics) result in
an interrupt.
Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/pcode/exec/trace/BytesTracePcodeEmulatorTest.java