gpt4 book ai didi

gcc - 如何在 NASM 中编写 GRUB stage1.S?

转载 作者:行者123 更新时间:2023-12-02 00:13:34 24 4
gpt4 key购买 nike

我正在尝试使用 NASM 和 gcc 编写多阶段引导加载程序。为此,我指的是 grub 引导加载程序源。

我写了一个 stage1 loader,但是卡在了 over writing partitionMBR表。

在 grub stage1.S 中,他们使用这样的代码来跳过分区表:

. = _start + STAGE1_PARTEND
.word STAGE1_SIGNATURE

我如何在 NASM 中做到这一点?

使用时间它将覆盖分区表。

所以请帮助我。

最佳答案

Assigning a value to . is treated the same as a .org directive
(参见 this page)。

因此,您粘贴的代码正在更改 current origin_start + STAGE1_PARTEND 并在其中放置一个值为 STAGE1_SIGNATURE 的单词。

所以在 NASM 代码中你应该能够做类似的事情:

fill: times _start+STAGE1_PARTEND-$ db 0
dw STAGE1_SIGNATURE
; .word is 16 bits on x86 (regardless of .code16 / .code64)

另见 this example在 NASM 手册中展示了如何以这种方式填充 BIOS 引导扇区,作为 MASM 风格 org 或 GAS 风格 的替代品。 = new_position 实际上在平面二进制输出文件中寻找并填充填充。

关于gcc - 如何在 NASM 中编写 GRUB stage1.S?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14294121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com