Na parte 1 a gente construiu um interpretador de Brainfuck com tokenizer, parser e uma Representação Intermediária. Agora a gente precisa entender o formato que a JVM espera receber pra poder gerar nosso próprio bytecode.
Quando você roda javac Hello.java, o compilador gera um Hello.class. Esse arquivo é binário - não é texto, não é JSON, não é XML. São bytes crus numa estrutura muito específica definida na especificação da JVM.
Nesse post, a gente vai abrir um .class com xxd, entender cada byte, e construir um gerador que monta essa estrutura do zero em Node.js.
Antes de tudo: big endian
A JVM usa big endian pra representar números de múltiplos bytes. Isso é importante porque o processador do seu computador (x86/ARM) provavelmente usa little endian, que é a ordem inversa.







