Longe vai o tempo em que eu conhecia programadores de aplicação que, no exercício de suas atividades, memorizavam códigos hexadecimais de linguagem de máquina de suas plataformas, bem como as chamadas de sistema apropriadas – hoje, creio que os mesmos programadores de aplicações, quando memorizam algo relacionado, o fazem com chamadas de API de bibliotecas, vários níveis acima daquelas camadas.

Houve o dia em que eu já soube os códigos hexa de várias instruções do Z-80, e uma série de chamadas de sistema do CP/M, e achava que isso seria útil por toda a minha carreira. As coisas mudam…
Mas isso ajuda a explicar uma parte dos motivos pelos quais eu acho interessantes as notícias sobre compiladores em rápida evolução: hoje eles estão ali para fazer por mim o que eu fazia nos 8 bits, e jamais voltarei a fazer.
E esta notícia sobre o sub-projeto Machine Code, do LLVM, vai além nesta busca pelo meu interesse: ela agrega a questão do código de máquina diretamente – assembly, disassembly e manipulação de formatos de arquivos de código-objeto, entre outros aspectos mais próximos à CPU.
Este post no blog do LLVM apresenta mais detalhadamente o LLVM Machine Code, criado para oferecer determinadas vantagens sobre compiladores que não contam com ferramentas de assembly tão fortemente integradas, e explica como foi sua evolução, apresenta suas características, descreve as vantagens que ele traz ao LLVM e ainda dá exemplos de seu funcionamento. (via osnews.com)