QNA > Q > Quanto È Difficile Il Linguaggio Assembly Ed È Molto Più Difficile Del C?

Quanto è difficile il linguaggio assembly ed è molto più difficile del C?

Il linguaggio assembly non è difficile, ma è pignolo. Devi essere molto attento all'hardware su cui stai lavorando, specialmente la CPU e i suoi registri. Dovete imparare il suo set di istruzioni e le sue idiosincrasie - quali operazioni impostano quali flag? Il semplice caricamento di un registro imposta i flag, o dovete prima fare un'operazione su di esso? INC cambia il flag Carry? È necessario un po' di studio. Dovete inizializzare tutte le variabili da soli, o essere consapevoli di quali ne hanno bisogno e quali no. Non c'è nessun type casting in assembler - tutte le variabili sono uguali, solo etichette associate a indirizzi nella RAM. Dovete essere disciplinati anche con le variabili, dato che sono tutte globali in assembler. Se hai bisogno di funzioni matematiche, oltre al semplice aggiungi, sottrai, moltiplica e (a volte) dividi che vengono fornite con la CPU, devi scrivertele da solo. E naturalmente non ci sono comode funzioni di libreria che potete includere per qualsiasi altra cosa. Se non riesci a trovare il sorgente di un driver per (diciamo) un LCD che ha scritto qualcun altro, indovina chi lo scriverà! (Siate generosi e condividete.)

È possibile scrivere del buon codice chiaro e strutturato in assembler che di solito è un po' più piccolo e un po' più veloce di un programma C, anche se è possibile scrivere del codice assolutamente terribile, dato che l'assembler non vi impone alcuna disciplina. L'abilità viene con l'esperienza. Sono cresciuto con l'assembler e sono arrivato tardi al C, quindi trovo il C irritante e restrittivo - maledetta sensibilità alle maiuscole e alle minuscole, prototipi di funzione aggravanti, e AAAARGHH!!! macro che assomigliano esattamente alle funzioni e non puoi trovarle quando cerchi di modificare il codice di qualcuno. Nel corso degli anni ho accumulato un'enorme collezione di codice che posso copiare e incollare per fare quasi tutto, e di solito posso tirar fuori un programma assembler funzionante più velocemente di quanto il prossimo ragazzo possa farlo in C. Posso certamente eseguire il debug del mio più velocemente di lui, poiché il debugger si presenta in assembler, e io ho il codice sorgente commentato e posso seguirlo linea per linea.

Di Vasta Bettenhausen

Il linguaggio assembly è considerato un linguaggio di programmazione funzionale? :: Qual è la differenza tra le istruzioni di assemblaggio movq e movl?
Link utili