GoldenCrystalLe 29/09/2013 à 14:36
C'est assez compliqué à faire en fait, car tu dois utiliser un jeu d'instructions très réduit pour tester chaque instruction, afin de minimiser au plus la possibilité de double-bug, qui introduirait énormément de faux positifs.
En gros, il te faut des instructions "fiables", que tu pourras si possible auto-tester au début de ton programme. En principe, chaque instruction validée peut ensuite être utilisée dans les tests suivants, mais si tu veux faire un test global qui teste toutes les erreurs d'un coup, tu ne peux pas faire cela.
Typiquement, tu pourras envisager de représenter le résultat de chaque test par une valeur non nulle en mémoire, donc il faudra que tu aies au moins une instruction d'écriture en mémoire qui soit 100% fiable. Evidemment, il te faudra une instruction d'initialisation de registre 100% fiable, ainsi qu'une instruction d'addition ou de soustraction 100% fiable, et il te faudra une instruction de saut conditionnel 100% fiable (tu choisis un seul flag) pour tes boucles et tes tests.
Ça doit être assez intéressant à coder comme programme, mais sacrément fastidieux. Et je ne suis même pas sûr que ça puisse être auto-généré…