汇编在线编辑器
编写、运行和分享代码片段,无需任何配置。
在浏览器里在线运行汇编
这是一个免费的在线汇编编译器,支持用 NASM 语法编写的 x86-64 代码。输入程序,点击“运行”,Coddy 就会用 nasm -f elf64 汇编、用 ld 链接,并在服务器端运行生成的 Linux 可执行文件,然后显示 stdout、stderr 和退出状态。无需安装任何东西:不需要 NASM、链接器、虚拟机,也不需要交叉编译器。
初始程序是一个完整的 _start 入口,它从标准输入读取一行,再用原始的 read、write 和 exit 系统调用写回一句问候,不依赖 libc。这才是汇编真正的工作方式:把参数放进 rax/rdi/rsi/rdx,执行 syscall,剩下的交给内核。每次运行时,都可以通过编辑器下方的标准输入面板给程序提供输入,就像用管道把数据传给真正的二进制程序一样。
这个汇编在线编辑器好用在哪里
- 真正的 x86-64 NASM 工具链。源代码在 Linux 上用
nasm -f elf64汇编、用ld链接,和你在本地输入的命令完全一样,所以这里的运行结果与真实机器上一致。 - 直接使用 Linux 系统调用。初始程序通过
syscall指令使用read、write和exit,中间没有 libc,让你清楚地看到寄存器如何传递参数和返回值。 - 支持标准输入。通过标准输入面板给程序传入字节,再用 0 号系统调用读取,适合经典的“读入名字、输出问候”练习,也适合更复杂的程序。
- 零配置,即时反馈。不用安装 NASM,不用记链接参数,也不会遇到权限错误:打开页面,编辑器就已就绪。汇编器和链接器的报错会直接显示在输出里。
可以在汇编在线编辑器里试试这些
- 用一次
write系统调用输出一个固定字符串,再干净地exit(0):这是最小的完整 x86-64 程序,也是理解_start和syscall如何配合的最快方法。 - 从标准输入读到
.bss缓冲区,去掉末尾的换行符,再原样输出:几乎所有依赖输入的汇编练习都是这个模式。 - 在寄存器里把两个数相加,再手动把结果转换成 ASCII 数字,这样才能用
write输出。你会由此明白,汇编里没有print,只有字节和系统调用。
汇编在线编译器常见问题
这个在线编辑器用的是哪种汇编器和语法?
nasm -f elf64 汇编、用 ld 链接。如果你习惯的是 AT&T/GAS 语法(%rax、movq 那种写法),请改写成 NASM 的 Intel 风格:mov rax, 1、section .text、global _start。使用它需要安装 NASM 或链接器吗?
不需要。完整的工具链运行在服务器端的沙盒容器里。你在浏览器里写 NASM,点击“运行”,Coddy 就会为你汇编和链接程序。本地无需安装任何东西:不需要 NASM、ld,也不需要 Linux 虚拟机。
在这里怎么用汇编读取输入?
read 系统调用(0 号):在 rax 中放 0(sys_read),在 rdi 中放 0(stdin),在 rsi 中放缓冲区地址,在 rdx 中放最大字节数,然后执行 syscall。你在编辑器下方标准输入面板里输入的内容,会在运行时传给你的程序。初始程序展示了完整的写法,包括去掉末尾的换行符。为什么我的程序需要 _start 而不是 main?
ld 链接,没有 C 运行时。main 是 libc 的约定:C 的启动代码在完成准备工作后才调用它。直接用 ld 链接时没有 libc,内核会直接跳到 _start 标签,所以这里的每个程序都要定义 global _start。程序结束时,你还要自己用 exit 系统调用(60 号)干净地退出。初学者也能用这个编译器学汇编吗?
能。从问候程序开始,改一改字符串,看看输出。然后试着读取输入、在寄存器里做算术,再手动把数字转换成文本。因为无需任何配置,每次运行都能立即得到反馈,你可以快速反复尝试,这正是培养对寄存器、内存和系统调用直觉的最快方法。
适合 Assembly 的实用工具
与 Assembly 在线编辑器搭配使用的免费浏览器工具,全部来自 Coddy。