Ho tre o quattro routine assembler (in circa 20 MB di sorgente) nei miei sorgenti al lavoro. Sono tutti SSE (2) e sono correlati alle operazioni su immagini (abbastanza grandi - si pensi a 2400x2048 e più grandi).
Per hobby, lavoro su un compilatore e lì hai più assemblatore. Le librerie runtime sono abbastanza spesso piene di loro, la maggior parte di esse ha a che fare con cose che sfida il normale regime procedurale (come helper per eccezioni ecc.)
Non ho alcun assemblatore per il mio microcontrollore. La maggior parte dei microcontrollori moderni ha così tanto hardware periferico (contatori controllati da interrupt, persino interi encoder in quadratura e blocchi di costruzione seriali) che spesso non è più necessario utilizzare l'assembler per ottimizzare i loop. Con gli attuali prezzi flash, lo stesso vale per la memoria del codice. Inoltre ci sono spesso gamme di dispositivi compatibili con i pin, quindi l'upscaling se si esaurisce sistematicamente l'alimentazione della CPU o lo spazio flash spesso non è un problema
A meno che non si spediscano davvero 100000 dispositivi e l'assemblatore di programmazione rende possibile ottenere risparmi davvero importanti semplicemente inserendo un chip flash di una categoria più piccola. Ma non sono in quella categoria.
Molte persone pensano che embedded sia una scusa per l'assemblatore, ma i loro controller hanno più potenza della CPU rispetto alle macchine su cui è stato sviluppato Unix . (Microchip in dotazione con microcontrollori da 40 e 60 MIPS per meno di 10 USD ).
Tuttavia molte persone sono bloccate con l'eredità, dal momento che cambiare l'architettura del microchip non è facile. Anche il codice HLL dipende molto dall'architettura (perché utilizza la periferica hardware, i registri per controllare l'I / O, ecc.). Quindi a volte ci sono buone ragioni per continuare a mantenere un progetto in assembler (sono stato fortunato ad essere in grado di impostare gli affari su una nuova architettura da zero). Ma spesso le persone si illudono di aver davvero bisogno dell'assemblatore.
Mi piace ancora la risposta data da un professore quando abbiamo chiesto se potevamo usare GOTO (ma potresti leggerlo anche come ASSEMBLER): "se pensi che valga la pena scrivere un saggio di 3 pagine sul motivo per cui hai bisogno della funzione, puoi usarlo . Invia il saggio con i tuoi risultati. "
L'ho usato come principio guida per le funzionalità di basso livello. Non essere troppo angusto per usarlo, ma assicurati di motivarlo adeguatamente. Alza anche una o due barriere artificiali (come il saggio) per evitare ragionamenti contorti come giustificazione.