QNA > P > Perché Un Programmatore Di Livello Assembly Ha Bisogno Dell'architettura Di Un Processore?

Perché un programmatore di livello assembly ha bisogno dell'architettura di un processore?

Tutto ciò che fa l'assemblaggio è sostituire i modelli di bit delle istruzioni con mnemotecniche leggibili dall'uomo. Alcuni assemblatori hanno alcune comodità come le variabili e le macro, ma questo è tutto.

Si sta effettivamente programmando a livello di set di istruzioni, il che significa che è necessario conoscere la semantica e le regole di quella ISA.

Per programmare in assembly, è necessario:

  • Conoscere le istruzioni disponibili, le loro modalità di indirizzamento e i loro effetti collaterali.
  • Conoscere i registri disponibili: quanti sono? Per cosa possono essere usati? Quali sono le regole associate al loro utilizzo?

E questa è solo roba a livello ISA. Se volete fare le cose bene, dovrete conoscere anche l'implementazione. Perché ammettiamolo: se state facendo le cose in assembly probabilmente avete a che fare con risorse molto limitate. Conoscere il costo del ciclo e della memoria di ogni istruzione è importante per la velocità. Per la tempistica, avrete anche bisogno di sapere come il processore (e la macchina) gestisce gli interrupts.

E ci sono anche altre cose. Per esempio, potreste voler usare lo stack: quali convenzioni usa? Il processore ha una mappa di memoria piatta? Una segmentata? Come viene gestito l'I/O?

Queste sono tutte cose che un futuro programmatore assembly deve sapere. Programmare in assembly non significa solo sapere quali istruzioni sono disponibili. A differenza di qualcosa come il C, non c'è astrazione dell'hardware.

Di Beutler

Perché Samsung non ha fornito uno slot SD per il Galaxy S6? :: Qual è la differenza tra M2 SSD e SSD?
Link utili