You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

M1 Mac上如何在VS Code中安装配置x86汇编运行环境

M1芯片Mac + 2022版VS Code 运行x86汇编配置方案

M1芯片是ARM64架构,无法直接运行x86指令,靠苹果官方Rosetta 2转译层就能实现x86汇编程序的编译、运行、调试,你已经装好C++环境的话,大部分基础依赖都齐了,按下面步骤配置就行:

第一步:补全基础依赖

  • 先确认Rosetta 2已安装,终端执行softwareupdate --install-rosetta,按提示走完安装流程即可,这是苹果官方的转译层,兼容性有保障。
  • 如果你课程用的是NASM语法的x86汇编,终端执行brew install nasm安装汇编器;如果用的是AT&T语法、靠clang编译,不用额外装,你配C++环境带的clang就支持。

第二步:安装VS Code必要插件

2022版VS Code对下面这些插件兼容性都没问题,直接在插件市场搜了装就行:

  • x86 and x86_64 Assembly:提供x86汇编的语法高亮、代码提示、自动补全
  • Code Runner:支持单文件一键运行,不用每次手动敲终端命令
  • 微软官方C/C++插件:你之前配C++环境应该已经装了,用来提供调试支持,没装的话补上。

第三步:配置一键运行规则

打开VS Code的设置(快捷键Cmd+,),点右上角的打开设置JSON按钮,在配置里找到code-runner.executorMap字段,添加asm后缀对应的执行命令:

"code-runner.executorMap": {
    // 如果你用NASM语法,用下面这行
    "asm": "nasm -f macho64 $fileName -o $fileNameWithoutExt.o && ld -arch x86_64 -macosx_version_min 12.0 -lSystem $fileNameWithoutExt.o -o $fileNameWithoutExt && arch -x86_64 ./$fileNameWithoutExt",
    // 如果你用clang/AT&T语法,把上面的asm值换成下面这行
    // "asm": "clang -c -arch x86_64 $fileName -o $fileNameWithoutExt.o && ld -arch x86_64 -macosx_version_min 12.0 -lSystem $fileNameWithoutExt.o -o $fileNameWithoutExt && arch -x86_64 ./$fileNameWithoutExt"
}

配置完之后,打开汇编源码文件,点右上角的运行按钮,或者按Ctrl+Option+N就能直接编译运行,结果会输出在VS Code的终端面板里。

命令说明:第一段把汇编源码编译为x86_64架构的目标文件,第二段链接为可执行文件,第三段强制调用Rosetta层运行x86程序,避免系统默认用ARM架构启动报架构不匹配错误。命令里的macosx_version_min后面的版本号填你自己当前Mac的系统大版本就行,比如13.0、14.0都可以,不影响运行。

第四步:配置断点调试(可选)

如果需要单步调试、看寄存器/内存值,就在你的汇编项目根目录新建.vscode文件夹,在里面建两个配置文件:
第一个是tasks.json,用来定义构建任务:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build x86 asm",
            "type": "shell",
            // 用NASM就保留下面这行命令,用clang就替换成之前提过的clang编译命令
            "command": "nasm -f macho64 ${file} -o ${fileBasenameNoExtension}.o && ld -arch x86_64 -macosx_version_min 12.0 -lSystem ${fileBasenameNoExtension}.o -o ${fileBasenameNoExtension}",
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

第二个是launch.json,用来定义调试启动规则:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug x86 asm",
            "type": "lldb",
            "request": "launch",
            "program": "${workspaceFolder}/${fileBasenameNoExtension}",
            "args": [],
            "preLaunchTask": "build x86 asm",
            "arch": "x86_64"
        }
    ]
}

注意arch字段必须填x86_64,否则调试器会默认用ARM架构启动,直接报错。配置完之后按F5就能启动调试,支持打断点、查看寄存器、单步执行。

常见踩坑提醒

  • M1上的Rosetta 2只支持64位x86(x86_64)程序,如果你课程学的是32位x86汇编,这套配置跑不了,要么把代码改成64位版本,要么装x86架构的Linux虚拟机跑32位环境。
  • MacOS的x86汇编系统调用号、函数调用约定和Linux不一样,不要直接抄Linux平台的汇编代码,否则运行会直接崩溃。
  • 编译链接的时候必须加-arch x86_64参数,否则工具链默认会编译出ARM64架构的二进制,没法运行x86逻辑。

内容的提问来源于stack exchange,提问作者s.eyal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 21:54:18