Salute e malattia

Fondamenti Assembly Language: Concetti, Casi d'Uso e Risorse Apprendimento

Assembly Language: Fondamenti Programmazione Low-Level

L'assembly language fornisce rappresentazione simbolica one-to-one delle istruzioni macchina di un processore. Permette controllo hardware diretto, performance massimale, overhead runtime minimo.

Concetti Chiave

ConcettoDescrizione
Instruction Set Architecture (ISA)Definisce operazioni, registri, addressing modes (es. x86-64, ARMv8, RISC-V, MIPS).
RegistriStorage on-CPU veloce: general-purpose (RAX, RBX…), speciali (RIP, RSP, RFLAGS), vettoriali (XMM/YMM/ZMM).
Memory AddressingDiretto, indiretto, base+index+scale+displacement; segmentazione (legacy) vs flat paging.
Tipi IstruzioniMovimento dati (MOV), aritmetiche (ADD, SUB, MUL, DIV), logiche (AND, OR, XOR, NOT), controllo flusso (JMP, Jcc, CALL, RET), SIMD (AVX, NEON), sistema (SYSCALL, CPUID).
Assembler & LinkerTraducono mnemonici → machine code; risolvono simboli, relocation; producono binari ELF / Mach-O / PE.
Calling ConventionsSystem V AMD64 (Linux/macOS), Microsoft x64 (Windows) – uso registri, stack alignment, shadow space.

Casi d'Uso Tipici

  • Kernel OS, bootloader, device driver.
  • Back-end compilatori (LLVM, GCC).
  • Loop performance-critici (crittografia, DSP, fisica, high-frequency trading).
  • Reverse engineering, analisi malware, sviluppo exploit.
  • Embedded / bare-metal firmware.

Risorse Apprendimento

  • "Programming from the Ground Up" (Bartlett) – Linux x86.
  • "Modern X86 Assembly Language Programming" (Kusswurm).
  • Manuali ARM / RISC-V (siti vendor).
  • Godbolt Compiler Explorer (visualizzare output assembly compilatore).

L'assembly non è un singolo linguaggio — ogni ISA ha sua sintassi e semantica. Maestria richiede comprendere architettura calcolatori, non solo mnemonici.