Vorrei provare ad evitare la codifica in assembler e, se possibile, adattare un compilatore C esistente al tuo processore di destinazione.
Con GCC hai molti obiettivi che potrebbero ispirarti per il tuo processore, e ci sono molti documenti per questo (vedi riferimenti in link per ulteriori informazioni). Effettivamente richiede uno sforzo (mesi di lavoro).
Largo (ma dimensione fissa, ad esempio due% nativo int
s-wide, come aritmetica a 64 bit su processori con parole a 32 bit) l'aritmetica viene eseguita in GCC all'interno di libgcc / directory, e la maggior parte è codificata in C (ma dipende molto da come il tuo GCC è configurato e mirato). Anche se non usi o porti GCC alla tua architettura (e credo che dovresti farlo), quel libgcc
dovrebbe essere di ispirazione (e IIRC, alcuni libri di Knuth spiegano gli algoritmi sottostanti, molti dei quali sono abbastanza intuitivi). . Leggi anche wikipage su aritmetica in virgola fissa .
Se vuoi interi interi arbitrariamente grandi, hai bisogno di una libreria bignum . Non reinventare il tuo (ci sono molti algoritmi ingannevoli più efficienti rispetto al modo ingenuo che hai imparato a scuola, e troverai molti libri e molti articoli di ricerca e conferenze sull'argomento; può ottenere un dottorato di ricerca su Bignums e trascorrere una vita lavorativa completa su di loro). Utilizza uno esistente, ad es. GMPlib .
Anche per il tuo processore di destinazione, non devi codificare molto in assembler. Farai meglio a portarti un compilatore C esistente (e praticamente ne hai bisogno, se vuoi che il tuo processore sia usato).