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.