首页 > 解决方案 > x86 或类似程序集中的内存分配

问题描述

背景:我正在设计自己的处理器和指令集作为学习练习。

我试图了解低级汇编程序如何知道它可以访问哪些内存地址。即使我们假设我们在没有虚拟内存或操作系统保护的情况下运行并且所有 RAM 都是可自由写入的,我们必须确保我们不会意外覆盖我们自己的指令,因为它操作的程序数据存储在相同的地址空间。

正如我所看到的,我们在这个级别上有三种类型的内存。

我的问题归结为以下几点:

  1. 静态数据声明如何以及何时转换为实际地址?
  2. 对于将由操作系统加载的用户模式程序,它如何知道将堆栈放在哪里?
  3. 对于作为操作系统的内核模式程序,如何知道可以将哪些内存用于内核数据结构、分配给进程等?所有东西都必须预先声明为静态的吗?

随意给出任何架构/操作系统实现的例子,我只是想弄清楚这到底是怎么可能的。

标签: assemblymemorystaticheap-memorystack-pointer

解决方案


推荐阅读