Videocorso Assembly x86-64 e ARM CGFA
Parla direttamente con il processore: NASM su Linux, registri, stack, chiamate di sistema, SIMD e un assaggio di ARM64
- Partenza: Da zero
- 16 ore con gli esercizi
- 10 lezioni in 3 livelli
- 2 lezioni gratis
A chi serve
Curiosi, studenti di informatica e programmatori che vogliono capire davvero cosa fa il computer sotto ai linguaggi di alto livello
Cosa serve per iniziare
- Un PC con Linux, oppure Windows con WSL (Ubuntu) per avere un terminale Linux
- Nessuna esperienza di programmazione obbligatoria: aiuta conoscere i numeri binari ed esadecimali, che ripassiamo insieme
- Pazienza: in assembly ogni riga fa una cosa piccolissima
Cosa installare
A cosa ti serve
- Sicurezza informatica e analisi del malware (reverse engineering)
- Sistemi embedded e firmware
- Sviluppo di compilatori, sistemi operativi e driver
- Ottimizzazione di codice critico per prestazioni e videogiochi
- Capire a fondo il C, il C++ e Rust
Programma del corso
10 lezioni in 3 livelli. Ogni lezione: video, spiegazione, codice da copiare o provare, esercizio con soluzione e quiz.
Base
Registri, istruzioni, salti, stack e funzioni
Intermedio
Array, stringhe, input e collegamento con il C
Avanzato
SIMD, debug, macro e ARM64
Progetto finale: Calcolatrice di fatture in assembly
Scrivi un programma NASM che somma gli importi di un array di fatture, aggiunge l'IVA al 22 per cento e stampa il totale a schermo. Userai array, funzioni, divisione e la conversione di un numero in testo.
I passi
- Dichiara in .data un array di 5 importi in euro con dq.
- Scrivi una funzione somma_array (rdi = indirizzo, rsi = quanti elementi) che restituisce il totale in rax.
- Scrivi una funzione con_iva che calcola x + x * 22 / 100 con imul e div.
- Scrivi una funzione stampa_numero che trasforma rax in cifre decimali: dividi per 10 ripetutamente e metti i resti nel buffer partendo dal fondo.
- Stampa il risultato con write e termina con exit.
- Prova tutto con gdb e controlla con strace le syscall.
- Extra: leggi gli importi dalla tastiera, oppure riscrivi la parte di somma in ARM64.
Esame e attestato
Alla fine del corso fai l'esame: 15 domande, serve il 75% di risposte giuste. Superato l'esame ottieni l'attestato stampabile con nome, ore, punteggio e un codice di controllo che chiunque può verificare.
Glossario di Assembly
- Registro
- Una piccolissima memoria velocissima dentro il processore.
- Istruzione
- Un'operazione elementare che il processore sa eseguire, come mov o add.
- Assemblatore
- Il programma (come NASM) che trasforma l'assembly in codice macchina.
- Linker
- Il programma (come ld) che unisce i file oggetto in un eseguibile.
- Syscall
- Una richiesta che il programma fa al sistema operativo, per esempio scrivere o uscire.
- Flag
- Un interruttore del processore che registra l'esito dell'ultima operazione, usato dai salti.
- Etichetta
- Un nome che segna un punto del codice o dei dati, usato per saltare o indirizzare.
- Stack
- La pila di memoria dove finiscono indirizzi di ritorno e dati temporanei.
- Convenzione di chiamata
- L'accordo su quali registri portano gli argomenti e il risultato di una funzione.
- SIMD
- Una istruzione che elabora più dati insieme, con i registri xmm e ymm.
- ARM64
- L'architettura RISC di telefoni, Raspberry Pi e chip Apple, detta anche AArch64.
- Macro
- Un modello di testo che l'assemblatore espande prima di produrre il codice.
Le prime 2 lezioni sono gratis
Per il corso completo, scuole e aziende: chiedi le condizioni.