首页 > 解决方案 > Nasm 将程序集引导加载程序导出为与内核链接的对象

问题描述

所以我有一个引导加载程序(boot.asm)和一个内核(kernel.cpp)

我在汇编代码中有“extern kernel_main”当我运行 nasm.exe -f bin boot.asm -o boot.obj 它会说“二进制输出格式不支持外部引用”但是当我运行nasm.exe -f win64 boot.asm -o boot.obj它会工作但在运行链接器后 ~\tdm-gcc64\C++.exe -T linker.ld -o Boot.img -ffreestanding -nostdlib boot.obj kernel.obj -lgcc 它会有垃圾像:“这个程序无法运行在 DOS 模式下“我在整个互联网上进行了搜索,但无法找到如何从 nasm 导出,因此它可以与 gcc 配合使用。任何帮助将不胜感激。我正在使用带有 nasm、gcc 和 qemu 的 64 位 Windows 10 家庭版编辑:我还需要知道如何将原点设置为 0x7c00,因为org 0x7c00在编译为对象时不起作用

标签: c++linkerkernelnasmbootloader

解决方案


推荐阅读