c ++从无文件系统执行代码

时间:2011-06-12 22:50:38

标签: c++ assembly filesystems mbr

首先,很难搞清楚一个标题,这有点模棱两可,但是很好。

好吧,所以我有一个混合的c ++& asm bootloader程序。我可以将它复制到我的mbr上并运行它。我遇到的唯一问题是mbr非常小。我假设它的目的是只调用写在驱动器上其他地方的外部代码。我的问题是,我不知道如何访问它。我的意思是我可以将数据放在那里,我不知道如何以编程方式访问该数据,因为本质上驱动器不会有“文件系统”,只是任意代码。

我在网上搜索过,但关于真正的低级别开发的教程似乎很少。

如果有的话,我甚至可以使用c ++库。

3 个答案:

答案 0 :(得分:4)

好老BIOS calls,适用于PC。如果您的主板不是PC - 您需要主板制造商提供有关如何访问IDE / SATA控制器的信息。

答案 1 :(得分:2)

在不了解平台的情况下,除了最通用的概述之外,很难提供任何其他内容。

初始启动代码通常要求系统固件将其他块从磁盘复制到内存,然后可以调用其中包含的代码。在PC系统上,这意味着BIOS调用。

答案 2 :(得分:2)

BIOS在运行MBR中的代码之前设置了几个中断处理程序。其中一个可用于直接从硬盘驱动器读取/写入扇区,而无需操作系统,设备驱动程序或文件系统。

这是中断1913H,因为它更常见)。

您需要使用它来阅读代码,然后只需jmp