A Arte da Assembly de 64 bits
Um novo volume de *The Art of 64-Bit Assembly*, focado em Windows x64 e MASM, provoca um debate mais amplo sobre se ainda vale a pena aprender e escrever assembly à mão numa era de compiladores poderosos e grandes modelos de linguagem. Muitos comentaristas defendem que assembly continua essencial para entender sistemas, escrever código de baixo nível crítico e obter desempenho máximo em pontos quentes específicos, enquanto outros observam que os compiladores modernos geralmente superam humanos exceto em casos especializados. O tópico também aborda detalhes de ABI e convenções de chamada, preferências de assemblers (MASM vs NASM/FASM/GAS) e a frustração de que debates sobre IA e marketing muitas vezes ofuscam o engajamento substantivo com livros tecnicamente ricos.
ABIs de C++, vtables e convenções do Windows
- A discussão esclarece que o layout de vtable faz parte das ABIs do compilador C++ (MSVC vs Itanium), não das ABIs do kernel.
- As APIs de modo de usuário do Windows usam ligação C; vtables e COM são convenções de espaço do usuário.
- As vtables de COM são independentes de linguagem: as primeiras entradas são métodos específicos, todas
__stdcall, e o layout efetivamente corresponde a um subconjunto restrito de C++. - Toolchains como MSYS2/Cygwin misturam convenções de chamada: SysV/Itanium internamente, convenções do Windows nas fronteiras da API.
- Conclusão: a interoperabilidade depende de entender qual ABI e qual convenção de chamada cada componente usa.
Ainda se escreve assembly na era dos LLMs?
- Muitos dizem que sim: para trocas de contexto do SO, handlers de interrupção, MCUs em tempo real, JITs, corrotinas, runtimes e laços muito quentes ou críticos para temporização.
- Vários veem assembly como um hobby e uma forma de entender sistemas em profundidade.
- Alguns relatam que LLMs funcionam bem para tradução entre assemblers, SIMD ARM e como apoio para ferramentas de engenharia reversa.
- Outros acham assembly gerado por LLM pouco confiável e mais lento, e não confiariam nele para código crítico.
- Consenso: compiladores normalmente superam humanos na maioria do código; humanos ainda podem superá-los em kernels pequenos, altamente especializados e críticos de desempenho.
IA, compreensão e o posicionamento do livro
- Há debate sobre uma frase de marketing que afirma que explicações de vtables por IA não têm “compreensão genuína”.
- Alguns chamam isso de marketing anti-IA; outros argumentam que, mesmo se os modelos forem treinados com o livro, não aplicarão isso de forma confiável nem conferirão a mesma compreensão que a leitura.
- Há preocupação de que o discurso seja dominado por “isso foi gerado por IA?” em vez do conteúdo técnico.
Assemblers, ferramentas e uso de macros/preprocessador
- Há opiniões fortes sobre MASM vs NASM/YASM/FASM/GAS; o MASM é elogiado pelos recursos, criticado por ser centrado no Windows e pela disponibilidade.
- O GAS é visto como orientado a compiladores, com macros mais fracas; alguns dependem de preprocessadores externos ou de assemblers com macros poderosas para gerenciar namespaces, estado de registradores/pilha e portabilidade.
- Recordações das históricas “guerras de assembler”; a prática moderna muitas vezes mistura assemblers e usa bibliotecas de macros intensivamente.
Livros e ecossistema em torno de assembly x86/ARM
- São recomendados vários outros livros de programação em assembly e baixo nível (x86-64, ARM, orientados a Linux).
- Vários comentaristas elogiam edições anteriores desta série “Art of Assembly” e livros relacionados de código de baixo nível, embora observem uma forte ênfase em Windows e alguma desconfiança em relação a compiladores.