banner

Blog

Jul 27, 2023

Chi ha paura del linguaggio assembly?

Questa settimana, [Al Williams] ha scritto un ottimo pezzo di riflessione sull'opportunità o meno di imparare ancora un linguaggio assembly, e quando. I commenti sono traboccati e siamo sorpresi che così tante persone siano sostanzialmente d'accordo con noi: sì. Certo, è una folla di Hackaday, ma non mi aspettavo ancora lo sfogo d'amore per la più primitiva delle lingue.

Tuttavia, il linguaggio assembly non è realmente un linguaggio. Ogni chip parla il proprio dialetto. Naturalmente ci sono delle somiglianze: ogni CPU ha una funzione di aggiunta, giusto? Ma quasi nessuna CPU ha un solo componente aggiuntivo: esistono varianti con e senza carry, memorizzazione e lettura da registri di lavoro o RAM. E quando si comincia a parlare di accesso alla memoria, diretto o indiretto, le singole architetture dei chip richiedono linguaggi di assemblaggio diversi.

Tuttavia, sebbene i modi particolari in cui le CPU fanno ciò che fanno possano essere incompatibili da un punto di vista strettamente linguistico, sono molto più simili in termini di idiomi di programmazione che imparerai lungo il percorso. Proprio come apprendere una serie di solidi algoritmi ti aiuterà indipendentemente dal linguaggio di livello superiore che utilizzi, apprendere i concetti dietro la creazione di cicli e semplici strutture di memoria dal linguaggio assembly grezzo ti servirà indipendentemente dalla CPU che sceglierai.

Ho scritto solo linguaggio assembly per una manciata di CPU, e non molto, ma ho trovato i microcontrollori i più amichevoli. Quindi, se vuoi immergere i piedi in quell'acqua, prendi un AVR o un MSP430. O forse anche la nuova novità: un RISC-V. Troverai che i set di istruzioni sono abbastanza piccoli da dover svolgere la maggior parte del lavoro da solo. E questo è, dopo tutto, lo scopo dell'apprendimento di un linguaggio assembly: imparare a pensare come il silicio. Se lo tratti come un puzzle divertente da risolvere, probabilmente ti piacerà anche l'esperienza.

La domanda originale di [Al] era quando dovresti imparare un linguaggio assembly: prima o dopo un linguaggio di livello superiore. Per il 99% dei nostri lettori, direi che la risposta è proprio adesso.

CONDIVIDERE