Assembly Playground
Escreva, execute e compartilhe trechos de código - sem instalação.
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 elf64e linkado comldno 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,writeeexitpela instruçãosyscallsem 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
writee depois umexit(0)limpo: o menor programa x86-64 completo e a forma mais rápida de ver como_startesyscallse 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 temprint, apenas bytes e syscalls.
Perguntas frequentes do compilador Assembly online
Qual assembler e sintaxe este playground usa?
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?
Como leio entrada em assembly aqui?
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?
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?
Ferramentas úteis para Assembly
Ferramentas gratuitas baseadas no navegador que combinam bem com o Playground de Assembly - tudo faz parte do Coddy.