Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 我应该在哪里将程序加载到RAM中?_Assembly_X86 - Fatal编程技术网

Assembly 我应该在哪里将程序加载到RAM中?

Assembly 我应该在哪里将程序加载到RAM中?,assembly,x86,Assembly,X86,我正在汇编中开发一个操作系统。我有一个工作的可执行加载程序加载COM文件,但我不确定我是否应该加载它们。我的操作系统以0x200000加载到RAM中。目前我没有内存管理或类似的东西。我只是害怕我会将一个程序加载到一些我不应该加载的程序中(比如视频ram,或者覆盖现有代码)。除了IDT和视频RAM之外,bios是否使用0x200000之前的任何东西。使用0x100000以上的任何东西都应该是安全的。我将内核加载到该地址,您可以将程序存储在大部分上层内存中 操作系统和程序的空间应该在0x100000

我正在汇编中开发一个操作系统。我有一个工作的可执行加载程序加载COM文件,但我不确定我是否应该加载它们。我的操作系统以0x200000加载到RAM中。目前我没有内存管理或类似的东西。我只是害怕我会将一个程序加载到一些我不应该加载的程序中(比如视频ram,或者覆盖现有代码)。除了IDT和视频RAM之外,bios是否使用0x200000之前的任何东西。

使用0x100000以上的任何东西都应该是安全的。我将内核加载到该地址,您可以将程序存储在大部分上层内存中

操作系统和程序的空间应该在0x100000以上。之前的一些部分是可用的,但除非您真的需要,否则可能更容易避免使用该部分

这是一个很好的参考,你可以期待的一些事情


解释如何找到可用内存。

这是一个非常模糊的问题。我有点怀疑你会得到这样有用的答案。是的,我同意,我会添加更多细节直到更多细节。我想这是x86?您正试图加载的操作系统或其他环境是什么?对于外围设备(视频卡),bios会枚举pci(e)总线并将其放入内存中,dos和linux以及其他工具会向您显示这些设备的放置位置,不一定每次启动都相同,但bios每次都使用相同的范围(除非您另有说明)通常情况下,32位机器的1gig窗口位于第3或第4 gig的上限,64位可能有2 gig窗口。我正在从头开始编写操作系统,它使用syslinux作为引导加载程序。它是32位的,处于保护模式。是的,它适用于x86处理器。内存映射设备可以超过1MB标记。您应该真正检查BIOS函数,这些函数返回RAM的布局。