C++ c++;从非文件系统执行代码

C++ c++;从非文件系统执行代码,c++,assembly,filesystems,mbr,C++,Assembly,Filesystems,Mbr,首先,我很难弄清楚一个标题,它有点模棱两可,但很好 P>,所以我有一个混合的C++和ASM引导加载程序。我可以将它复制到我的mbr并运行它。我唯一的问题是mbr非常小。我假设它的目的是只调用驱动器上其他地方编写的外部代码。我的问题是,我不知道如何访问它。我的意思是我可以把数据放在那里,我只是不知道如何编程来访问这些数据,因为本质上驱动器不会有“文件系统”,只是任意代码 我在网上搜索过,但是关于真正的低级开发的教程似乎很少 我甚至可以选择一个C++库。如果你的板不是PC,你需要从板制造商那里获得

首先,我很难弄清楚一个标题,它有点模棱两可,但很好

<> P>,所以我有一个混合的C++和ASM引导加载程序。我可以将它复制到我的mbr并运行它。我唯一的问题是mbr非常小。我假设它的目的是只调用驱动器上其他地方编写的外部代码。我的问题是,我不知道如何访问它。我的意思是我可以把数据放在那里,我只是不知道如何编程来访问这些数据,因为本质上驱动器不会有“文件系统”,只是任意代码

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


我甚至可以选择一个C++库。如果你的板不是PC,你需要从板制造商那里获得ID/SATA控制器的信息。

< P>不知道平台,除了最通用的概览,什么都不做。
初始引导代码通常要求系统固件将附加块从磁盘复制到内存,然后调用其中包含的代码。在PC系统上,这意味着一个BIOS调用。

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

这就是中断
19
(更常见的说法)

您需要使用它来读取代码,然后将jmp
jmp
放入其中。

+1用于说明(可能不是这样)显而易见的问题:这取决于平台。BIOS只是带有BIOS的系统的解决方案,但有些平台没有BIOS。