Precisione del ciclo attraverso l'uso di un microtable per un'emulazione della CPU a 8 bit?

0

Sto scrivendo un emulatore di cpu a 8 bit e attualmente ho una tabella di salto per diversi opcode. Voglio spostare questo per essere accurato al ciclo e mi chiedevo quale sarebbe l'approccio migliore nell'implementazione di un microtable?

Stavo pensando a qualcosa di simile al seguente:

//PSEUDO
static int (*microtable[][])(cpu *t_cpu) = {
        {FETCH_OP, FETCH_OPERAND, DO_JMP, BURN_CYCLE},
        {FETCH_OP, FETCH_OPERAND, DO_ADD, NIL},
};

Dove ogni riga è indicativa di un OP e ogni ciclo è definito da una serie di operazioni.

Ad esempio l'istruzione JMP (prima riga) impiegherebbe 3 cicli se dovesse accadere sulla stessa pagina, altrimenti 4 cicli eseguendo il BURN_CYCLE.

Questo deve essere guidato da una funzione esterna che è impostata per l'esecuzione ad una determinata frequenza di clock, quindi essenzialmente assegnerò / riferirò le micro-operazioni dal tavolo al volo durante l'esecuzione.

Qualche idea?

    
posta silent 20.05.2018 - 13:56
fonte

0 risposte

Leggi altre domande sui tag