-1

简单操作系统(如 DOS)的程序加载器,从软盘或硬盘读取程序代码,并将其字节代码移动到 RAM。

问题 1:字节码具体移动到哪里?到堆、堆栈或 RAM 的其他区域?

让我们看看这个 asm 代码:mov eax, 5​​. “5”是一个值,它也被移动到 RAM 中。

问题2:如何将值移入eax?是否存在 mov 操作码?

4

1 回答 1

1

问题一:字节码到底移到哪里去了?到堆、堆栈或 RAM 的其他区域?

确切的位置通常取决于:

  • 操作系统
  • 安装的内存量
  • 该程序
  • 内存分配的历史

程序很少在其他程序内部运行或彼此共享堆栈和堆,并且它们通常有自己的。

DOS 只是简单地找到一块空闲的内存块,程序可以在其中放置并加载它,可能会将块一分为二。AFAIR,有一种方法可以选择更低或更高的地址,但仅此而已。居民项目和司机显然会影响位置。

问题2:如何将值移动到eax中?是否存在 mov 操作码?

这一定是一个单独的问题。是的,有mov eax, 5关于 i80386+ CPU 的指令。

于 2013-04-06T14:37:50.203 回答