Menu
Coddy logo textTech

Assembly Playground

Escreva, execute e compartilhe trechos de código - sem instalação.

Coddymain.asm
Output
Click Run to see the output here.

Rode Assembly online no seu navegador

Este é um compilador Assembly online e gratuito para código x86-64 escrito em sintaxe NASM. Digite seu programa, clique em Executar e o Coddy o monta com nasm -f elf64, faz o link com ld e roda o executável Linux resultante no servidor; depois mostra stdout, stderr e o código de saída. Não há nada para instalar: nem NASM, nem linker, nem máquina virtual, nem compilador cruzado.

O programa inicial é um ponto de entrada _start completo que lê uma linha da entrada padrão e devolve uma saudação usando as syscalls cruas read, write e exit, sem libc. É assim que o assembly realmente funciona: você move os argumentos para rax/rdi/rsi/rdx, invoca syscall e o kernel faz o resto. Use o painel de stdin abaixo do editor para alimentar entrada ao seu programa a cada Execução, exatamente como redirecionar dados para um binário real.

O que torna este playground de Assembly útil

  • Toolchain NASM x86-64 real. Seu código-fonte é montado com nasm -f elf64 e linkado com ld no Linux, os mesmos comandos que você digitaria localmente, então o que roda aqui corresponde ao que roda em uma máquina real.
  • Syscalls diretas do Linux. O programa inicial usa read, write e exit pela instrução syscall sem libc no caminho, então você vê exatamente como os registradores carregam argumentos e valores de retorno.
  • Suporte à entrada padrão. Envie bytes ao seu programa pelo painel de stdin e leia-os com a syscall 0: útil para os exercícios clássicos de 'ler um nome e imprimir uma saudação' e além.
  • Zero configuração, resposta instantânea. Sem instalar NASM, sem flags de linker para lembrar, sem erros de permissão: abra a página e o editor está pronto. Os erros do assembler e do linker voltam direto na saída.

O que você pode experimentar no playground de Assembly

  • Imprima uma string fixa com uma única syscall write e depois um exit(0) limpo: o menor programa x86-64 completo e a forma mais rápida de ver como _start e syscall se encaixam.
  • Leia da stdin para um buffer .bss, remova a quebra de linha final e devolva-a: o padrão por trás de quase todo exercício de assembly baseado em entrada.
  • Some dois números em registradores e converta o resultado em dígitos ASCII à mão, para poder fazer write. É assim que você aprende que o assembly não tem print, apenas bytes e syscalls.

Perguntas frequentes do compilador Assembly online

Qual assembler e sintaxe este playground usa?
Ele usa o NASM (o Netwide Assembler) com sintaxe Intel, direcionado ao x86-64 Linux. Seu código é montado com nasm -f elf64 e linkado com ld. Se você vem da sintaxe AT&T/GAS (o estilo %rax, movq), reescreva no estilo Intel do NASM: mov rax, 1, section .text, global _start.
Preciso instalar o NASM ou um linker para usar isto?
Não. A toolchain completa roda no servidor, em um contêiner isolado. Você escreve NASM no navegador, clica em Executar e o Coddy monta e faz o link do seu programa por você. Não há nada para instalar localmente: nem NASM, nem ld, nem VM Linux.
Como leio entrada em assembly aqui?
Use a syscall read (número 0): coloque 0 em rax (sys_read), 0 em rdi (stdin), o endereço de um buffer em rsi e a contagem máxima de bytes em rdx, então execute syscall. Tudo o que você digitar no painel de stdin abaixo do editor é entregue ao seu programa na Execução. O programa inicial mostra o padrão completo, incluindo a remoção da quebra de linha final.
Por que meu programa precisa de _start em vez de main?
Porque o programa inicial é linkado com ld e sem runtime de C. main é uma convenção da libc: o código de inicialização de C o chama depois de preparar as coisas. Com um link ld puro não há libc, então o kernel salta direto para o rótulo _start, e é por isso que todo programa aqui define global _start. Você é responsável por sair de forma limpa com a syscall exit (número 60) no final.
Posso aprender assembly com este compilador mesmo sendo iniciante?
Sim. Comece pelo programa de saudação, mude a string e observe a saída. Depois experimente ler entrada, fazer aritmética em registradores e converter números em texto à mão. Como não há configuração e cada Execução dá resposta instantânea, você pode iterar rápido, que é a forma mais rápida de desenvolver intuição para registradores, memória e syscalls.

Ferramentas úteis para Assembly

Ferramentas gratuitas baseadas no navegador que combinam bem com o Playground de Assembly - tudo faz parte do Coddy.