c++ - 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
在编译为对象时不起作用
解决方案
推荐阅读
- javascript - 使用 JAVASCRIPT 从 Android 中的 TextBox 向应用程序发送文本
- java - scala for 循环生成器 - 在完成第二个循环后添加换行符
- python - 如何将 pprint 输出作为字符串而不打印在标准输出上?
- postgresql - 如何从 postgres 数据库中以 CSV 格式下载所有表
- travis-ci - Travis-CI 仅在所有构建完成后部署一次
- c - 在 c 编程中处理客户端-服务器套接字中的 ctrl+c
- java - 在 Selenium 中的线程“main”java.lang.NullPointerException 中获取异常
- github - 您必须为操作提供个人访问令牌或 GitHub 令牌密码才能部署
- java - 为什么我会从 Java 中的 Mock Server 获得 Assert Not Equal?
- jenkins - Jenkins:如何在詹金斯声明式管道中实现并行动态阶段