Le cœur 65C02
Un émulateur de processeur se juge sur preuve : ici, 2,54 millions de cas comparés à une référence publique.
Un accès bus par cycle
Le cœur (src/cpu/cpu65c02.c) exécute une instruction en reproduisant la séquence des accès au bus, un par cycle, avec les lectures factices que fait le vrai processeur. C’est ce qui rend exact le nombre de cycles, donc le temps.
L’oracle
Le cœur est comparé à SingleStepTests (jeu wdc65c02) : 254 opcodes × 10 000 cas = 2 540 000 cas. Pour chacun on compare l’état final, la RAM, le nombre de cycles et la séquence exacte des accès au bus. Le score exigé est 100 %, et make test-oracle échoue en dessous. Une version rapide (test-oracle-quick) sert au quotidien.
Ce que l’oracle ne dit pas
Phosphoneo l’écrit dans la précision plutôt que de le taire :
- les fichiers
cb.jsonetdb.jsonde l’oracle (WAIetSTP) sont vides : leur comportement suit la fiche du fabricant, sans mesure ; - les interruptions et le RESET ne sont pas couverts par l’oracle (des tests propres,
test-irq, vérifient le comportement fonctionnel) ; - pour
$5C, l’oracle donne 4 cycles là où la fiche en indique 8 : on suit l’oracle, l’écart n’est pas tranché sur silicium ; - le cycle « décimal » d’
ADC/SBCimmédiat lit$007Fou$0000comme l’oracle le donne, sans que la fiche l’explique.