Tenho três ou quatro rotinas de assembler (em fonte de cerca de 20 MB) em minhas fontes no trabalho. Todos eles são SSE (2) e estão relacionados a operações em imagens (bastante grandes - pense em 2400x2048 e maiores).
Por hobby, eu trabalho em um compilador, e aí você tem mais assembler. Bibliotecas de tempo de execução estão frequentemente cheias deles, a maioria deles tem a ver com coisas que desafiam o regime de procedimento normal (como ajudantes para exceções, etc.)
Não tenho nenhum montador para meu microcontrolador. A maioria dos microcontroladores modernos tem tanto hardware periférico (contadores controlados por interrupção, até mesmo codificadores inteiros de quadratura e blocos de construção seriais) que o uso do assembler para otimizar os loops geralmente não é mais necessário. Com os preços atuais do flash, o mesmo vale para a memória de código. Além disso, muitas vezes há intervalos de dispositivos compatíveis com pinos, portanto, aumentar a escala se você sistematicamente ficar sem energia da CPU ou espaço flash muitas vezes não é um problema
A menos que você realmente envie 100.000 dispositivos e o montador de programação torne possível realmente fazer uma grande economia apenas inserindo em um chip flash uma categoria menor. Mas não estou nessa categoria.
Muitas pessoas pensam que embarcado é uma desculpa para montador, mas seus controladores têm mais potência de CPU do que as máquinas em que o Unix foi desenvolvido. (Microchip vem com microcontroladores de 40 e 60 MIPS por menos de US $ 10).
No entanto, muitas pessoas estão presas ao legado, já que mudar a arquitetura do microchip não é fácil. Além disso, o código HLL é muito dependente da arquitetura (porque ele usa a periferia de hardware, registra para controlar E / S, etc). Portanto, às vezes há boas razões para manter um projeto em assembler (tive a sorte de poder configurar assuntos em uma nova arquitetura do zero). Mas muitas vezes as pessoas se enganam achando que realmente precisam do montador.
Ainda gosto da resposta que um professor deu quando perguntamos se poderíamos usar GOTO (mas você também pode ler isso como ASSEMBLER): "se você acha que vale a pena escrever um ensaio de 3 páginas sobre por que você precisa do recurso, você pode usá-lo . Envie o ensaio com seus resultados. "
Usei isso como princípio orientador para recursos de nível inferior. Não fique muito apertado para usá-lo, mas certifique-se de motivá-lo adequadamente. Até mesmo coloque uma ou duas barreiras artificiais (como o ensaio) para evitar o raciocínio complicado como justificativa.