Recentemente sono stato consumato creando la mia semplice architettura CPU che a un certo punto potrebbe essere facilmente implementata nell'hardware (nessun FPGA, ma circuiti Logic Gate reali). Naturalmente per soddisfare questo requisito sono andato con una semplice CPU a 4 bit, con uno spazio di programma di 4 KB e 256 byte di RAM.
Supporta tutte le operazioni fondamentali come ADD, Sottrai, AND, LOAD, STORE ecc. Prima di iniziare a trasmettere questo all'hardware voglio sviluppare uno stack software moderatamente potente che possa compilare un linguaggio C / C come architettura, quindi la cpu potrebbe essere programmata usando un linguaggio di alto livello. Attualmente ho scritto un assemblatore funzionante in VB.NET, ma ora sono bloccato su come affrontare l'obiettivo finale di un compilatore funzionante.
In particolare, ho le seguenti domande:
Quale dovrebbe essere il mio prossimo passo, e come dovrei approcciare alla scrittura di un compilatore?
Anche se una CPU a 4 bit è semplice, non è molto utile in quanto non può gestire calcoli di grandi dimensioni contemporaneamente, quindi il mio obiettivo finale sarebbe astratto questa incapacità sviluppando uno stack software che all'utente sarebbe come programmare un 16 CPU bit (o più grande). Attualmente scrivo manualmente un assembly che può estendersi su più numeri su più registri ed eseguire calcoli tra di loro, ma alla fine quale parte dello stack software si occupa della gestione di numeri e calcoli che sono maggiori delle dimensioni dei registri fisici?
Quale parte dello stack del software riguarda la chiamata di subroutine ecc?
Per favore fatemi sapere se ho bisogno di chiarire qualsiasi cosa.