c - 使用 Qemu 进行裸机 X86 组装
问题描述
你能帮我理解使用 Qemu 加载 bin 时的引导流程吗?如果我们考虑一个简单的程序,例如将 ascii 写入 VGA 内存,那么当我们调用时,bin 会加载到哪里
qemu-system-i386 -drive 'file=my_image.bin,format=raw' -serial mon:stdio -smp 2
根据我的理解,找到具有魔术模式 0xAA55 的有效引导扇区的 bios 将该扇区加载到 0x7c00。Qemu 是否真的将 bin 复制到 HDA 的这个引导扇区中?
我在许多教程中看到,使用 0x7c00 作为加载地址配置的链接描述文件用于生成精灵。然而,这个精灵被转换为一个 bin 并传递给 qemu。那么,真的需要 0x7c00 的加载地址吗?它可以是链接描述文件中的任何其他值吗?
解决方案
推荐阅读
- flutter - 在 Flutter 应用程序中制作可滚动的平面按钮
- javascript - 迭代每个面积值
- amazon-web-services - 在 Elastic Beanstalk 部署期间,我的 Docker 容器时不时地没有正确停止
- json - 在 Python 中解析列表数据?
- for-loop - 使用 forEach 时渲染画布饼图的困难
- java - 如何将字符串数组从 C++ 返回到 Java (JNI)
- php - 以任意顺序匹配正则表达式特定字符数量
- python - 在 Python 多线程中调用 requests_html 或 pyppeteer ErrorError: signal only works in main thread
- python - 如何在 swig 中包装包含 int 和 int 向量的地图?
- django - ModuleNotFoundError:没有名为“django_project”的模块