In realtà mi sono posto questa domanda.
La risposta accettata fa alcune affermazioni ragionevoli, specialmente per quanto riguarda i sistemi e gli acronimi menzionati dall'OP. Di sicuro, i veri emulatori multithread non ci danno molto a livello di emulazione.
Tuttavia, ho cercato di ottenere un'emulazione più vera di una scheda KIM-1, con un'emulazione RRIOT più completa, con interruzioni utilizzabili e non mascherabili utilizzabili ai fini dei timer (ad esempio, timer che possono essere ridimensionati, riavviati e accessibile dal programmatore).
Un approccio è l'implementazione del multitasking nell'emulatore (che non deve essere effettivamente parallelo), quindi abbiamo timer indipendenti (o un singolo timer) che possono essere ridimensionati, collegati a "interrupt", ecc. Cioè, il codice utente può eseguire quel controllo delle posizioni di memoria per le informazioni del timer che dovrebbero passare oltre anche quando le nostre stesse istruzioni del programma vengono passate attraverso. Ancora più importante, potrebbe essere un buon modo per emulare gli interrupt a cui un programma si abbona, consentendo ai nostri gestori di interrupt di funzionare come previsto.
L'intenzione è di emulare più da vicino il meccanismo della CPU e supportare i chip in modo tale che i registri, gli interrupt programmabili e le posizioni di memoria di sola lettura che cambiano quando i tic tac hardware si comportino più come previsto. Ma facendolo senza codificandolo al livello di caricamento ed esecuzione complicato per codice operativo.
Penso che potrebbe essere più facile emulare la velocità della CPU di destinazione un po 'più vicino, o almeno ottenere una risoluzione del timer piuttosto accurata. Cioè, ciò che accade tra i vari aggiornamenti e interruzioni di posizione del timer non è così importante fintanto che i tick e gli interrupt sono corretti quando le routine utente e ROM li accedono.
Sì, è ancora un lavoro in corso.