GloriousCow
Experienced Member
- Joined
- Oct 27, 2022
- Messages
- 432
I'm pleased to announce the release of a test suite for 80386 emulators.
github.com
This initial release covers the 386's real-mode instruction set fairly comprehensively, including 941 test files across 406 opcodes with every valid combination of operand-size and address size-prefix. In total it includes 1,758,700 individual, heuristically-generated instruction tests, all of them containing cycle exact captures of the execution of a real 386 CPU under the control of an Arduino Giga.

I have future plans to cover protected mode. Thanks to the 386EX's addition of System Management Mode, we can set and read out the contents of the CPU's internal descriptor caches, which makes that possible.
The tests are released in a binary format I call MOO.
I have a reference MOO parser in Rust and now C++ :
https://github.com/dbalsom/moo/tree/main/cpp
If you prefer the more traditional JSON SingleStepTest format, a conversion script is available.
GitHub - SingleStepTests/80386: A Hardware-Generated Emulator Test Suite for the Intel 80386
A Hardware-Generated Emulator Test Suite for the Intel 80386 - SingleStepTests/80386
This initial release covers the 386's real-mode instruction set fairly comprehensively, including 941 test files across 406 opcodes with every valid combination of operand-size and address size-prefix. In total it includes 1,758,700 individual, heuristically-generated instruction tests, all of them containing cycle exact captures of the execution of a real 386 CPU under the control of an Arduino Giga.

I have future plans to cover protected mode. Thanks to the 386EX's addition of System Management Mode, we can set and read out the contents of the CPU's internal descriptor caches, which makes that possible.
The tests are released in a binary format I call MOO.
I have a reference MOO parser in Rust and now C++ :
https://github.com/dbalsom/moo/tree/main/cpp
If you prefer the more traditional JSON SingleStepTest format, a conversion script is available.