4 ms·
Yes, I ran with the original in lockstep and confirmed the same reads and writes were occurring.
by loadzero 7y ago
Yes, I ran with the original in lockstep and confirmed the same reads and writes were occurring.
- loadzero 7y agoIt felt like it took forever. But about 200 hours all up, over a few months.
- matsemann 7y agoI'd like to read more about this setup!
- loadzero 7y agoYeah, there's probably a good article or two in that. Cliff notes: It's basically an extension of the Dual CPU setup mentioned in http://www.gtoal.com/sbt/ http://www.gtoal.com/sbt/ In that article, Graham Toal discusses a hack where you can bootstrap a new emulator core from an existing one by making a custom emulator that drives both cores at the same time. After each clock tick, you check the states of both processors for divergence and halt with the diff if there is one.
- zentiggr 7y agoFirst I've heard of the technique, that is amazing. Makes me consider getting back to lower level coding again, even just test code, just to see it in action.
- loadzero 7y agoIt's a great technique. Using it, and a suitable test program, you can bootstrap an emulator core for something simple like a mips, z80 or 6502 in a day or two. I highly recommend it as a low-level itch scratching programming exercise.
- FullyFunctional 7y agoCo-simulation is widely used for verifying RTL implementations, see fx. dromajo.org but it's a general useful thing and I've used in many contexts, even for verifying a compiler against an interpreter.
- exlurker 7y agoThank you for this, amazing labour of love! And this article really gets my mind churning ... :)