sublime text 需手动配置构建系统才能汇编运行:先确保 nasm/ld 或 gcc 已安装并加入 path,再创建匹配语法 scope 的 assembly.sublime-build 文件,正确设置 selector 和平台相关 shell_cmd,最后务必同步设置文件语法为 assembly (nasm)。

Sublime Text 本身不运行汇编代码,它只调用外部工具链(nasm + ld 或 gcc);没配好构建系统就按 Ctrl+B,大概率报 sh: nasm: command not found 或直接无反应。
确认 nasm 和链接器已安装并可命令行调用
这是所有后续步骤的前提。Sublime 不管你装没装,它只负责执行 shell 命令。
- 在终端里分别运行
nasm -v和ld -v(Linux/macOS)或gcc --version(Windows/macOS 替代链接),必须有输出 - Windows 用户注意:
nasmw.exe是 GUI 版,命令行要用nasm.exe,且必须加进系统PATH - macOS 用 Homebrew 安装的
nasm默认在/opt/homebrew/bin/nasm,但 Sublime 若不是从终端用subl .启动,可能读不到这个PATH,导致找不到命令
创建 Assembly.sublime-build 并匹配语法 scope
构建系统不会自动生效,必须和当前文件的语法 ID 对得上;选错语法或没绑定,Ctrl+B 就会静默失败或走默认 Python 构建。
- 先右下角点击语言名(如
Plain Text),选Assembly (NASM)—— 这一步决定selector字段写什么 - 菜单
Tools → Build System → New Build System,粘入 JSON,关键字段不能错: -
"selector": "source.asm"对应Assembly (NASM)语法;若你选的是Assembly (GAS),得改成"selector": "source.asm-gas" -
"shell_cmd"要按平台调整:-f elf64(Linux)、-f macho64(macOS)、-f win64(Windows);macOS 上ld不能直接链接 NASM 输出,得用gcc ${file_base_name}.o -o ${file_base_name}
运行时没输出、卡住、或报段错误
这不是构建配置问题,而是汇编代码本身或运行环境不匹配。Sublime 的输出面板只显示构建命令的 stdout/stderr,不接管进程 stdin 或调试能力。
- 确保代码以
_start(Linux/macOS)或main(Windows + gcc 链接)为入口,NASM 默认不生成 C runtime 初始化,用printf会段错误 - 用
input()类交互操作?不行——Sublime 构建输出面板不支持 stdin 输入,必须回终端跑./your_program - 调试需求强烈的话,别依赖
Ctrl+B:写完保存后,手动切终端,执行nasm -f elf64 hello.asm -o hello.o && ld hello.o -o hello && ./hello,能过再塞进构建系统
最常被忽略的一点:语法高亮和构建系统完全解耦。高亮设成 Assembly (NASM) 只影响颜色,不代表构建系统就能跑;反过来,构建系统配对了但语法没设对,Ctrl+B 也不会触发。两者必须同步手动确认一次,尤其换项目或重装 Sublime 后。











