Sono a conoscenza di questa domanda , e io penso di sapere perché è stato chiuso. Spero che la mia domanda riesca a essere più specifica.
Il mio livello di abilità: ho una laurea in "Informatica". Ho programmato in molte lingue. Nel giorno in cui ho programmato in C su un microcontrollore integrato (TI MSP430) e in Python e Prolog. Non ho assolutamente esperienza nella programmazione in linguaggio assembly, anche se penso capisco il concetto. Ho dovuto incorporare l'assembly per il mio lavoro con il microcontrollore, ma questo era al livello di inizializzare parte dell'hardware collegato; niente che implicasse anche l'implementazione di un algoritmo.
Sono consapevole del fatto che "The Art of Computer Programming" di Knuth mostra tutti gli algoritmi in assembly. Passare attraverso questo libro è un investimento enorme e lo farei se qualcuno lo consiglia.
Mi rendo conto che questa domanda è molto generica, ma dal momento che non ho assolutamente alcuna esperienza precedente, trovo davvero difficile metterla in un contesto qualsiasi.
Il mio "problema":
Devo implementare un simulatore per un progetto che fa parte del mio lavoro di tesi. Ho provato a farlo in due diversi linguaggi di alto livello: Python e Prolog. Non sono in grado di modellare le "cose" che sto simulando (unità autonome, molto semplici senza una logica complessa, ma troppe di esse) senza incorrere troppo in overhead. Ho anche preso in considerazione l'utilizzo dei processi di Erlang ed Erlang, ma la messaggistica tra di loro è sicuramente un pessimo modo di modellizzare il modo in cui le cose interagiscono tra loro.
Ho preso in considerazione l'utilizzo di C o C ++. La simulazione comporta il cambiamento del comportamento delle cose che sto modellando, e farlo in C o C ++ significherebbe in realtà implementare una macchina "virtuale" (il simulatore) che mi permette di farlo. Sembra che l'assemblatore lo renderà leggermente più facile. Devo ammettere che l'architettura su cui ho scritto (molto limitato) il montaggio aveva uno spazio di indirizzamento piatto, motivo per cui ho pensato che sarebbe stata un'opzione.
Sembra che il linguaggio dell'Assemblea potrebbe essere la via da seguire. Tuttavia, sono in perdita a:
- quale linguaggio assembly scegliere
- come scegliere un'architettura
Cose che ho considerato:
- GNU Assembler
- MMIX di Knuth
Le domande:
- Posso effettivamente utilizzare uno dei due per un'implementazione (più o meno) efficiente su un'architettura già esistente?
- Questo suona come un tentativo completamente fuorviato?