简单操作系统(如 DOS)的程序加载器,从软盘或硬盘读取程序代码,并将其字节代码移动到 RAM。
问题 1:字节码具体移动到哪里?到堆、堆栈或 RAM 的其他区域?
让我们看看这个 asm 代码:mov eax, 5
. “5”是一个值,它也被移动到 RAM 中。
问题2:如何将值移入eax
?是否存在 mov 操作码?
问题一:字节码到底移到哪里去了?到堆、堆栈或 RAM 的其他区域?
确切的位置通常取决于:
程序很少在其他程序内部运行或彼此共享堆栈和堆,并且它们通常有自己的。
DOS 只是简单地找到一块空闲的内存块,程序可以在其中放置并加载它,可能会将块一分为二。AFAIR,有一种方法可以选择更低或更高的地址,但仅此而已。居民项目和司机显然会影响位置。
问题2:如何将值移动到eax中?是否存在 mov 操作码?
这一定是一个单独的问题。是的,有mov eax, 5
关于 i80386+ CPU 的指令。