
使用一种简单的动态重定位,把每个进程的地址空间映射到物理内存的不同部分。当使用基址寄存器和界限寄存器时,程序装载到内存中连续的空闲位置且装载期间无须重定位,如图3-2c所示。当一个进程运行时,程序的起始物理地址装载到基址寄存器中,程序的长度装载到界限寄存器中。在图3-2c中,当第一个程序运行时,装载到这些硬件寄存器中的基址和界限值分别是0和16 384。当第二个程序运行时,这些值分别是16 384和16384。如果第三个16KB的程序被直接装载在第二个程序的地址之上并且运行,这时基址寄存器和界限寄存器里的值会是32 768和16 384。
基址寻址指的是程序在内存中的位置是由基地址和偏移量共同决定的方式。在基址寻址方式下,程序所有指令的地址都是相对于程序的基地址而言的。当 *** 作系统运行多个程序时,每个程序都有自己的基地址,在内存中被独立存储,各程序之间不会相互干扰。因此,基址寻址方式对多道程序设计有利,主要体现在以下几个方面:
1. 隔离多个程序的内存空间
在多道程序设计中,为了保证多个程序能够同时运行在单个计算机上,需要将它们的内存空间进行隔离。对于每个程序, *** 作系统都会为其分配一块内存空间,使得每个程序都可以独立地使用它们自己的内存,不会相互干扰。基址寻址方式通过使用基地址和偏移量来确定程序的内存位置,可以确保每个程序都能独立地运行在自己的内存空间中,不会相互干扰。
2. 简化程序的开发和维护
基址寻址方式使得程序中所有指令的地址都是相对于基地址而言的,这样可以使得程序的开发和维护更加简单。在程序中,只需要使用相对于基地址的偏移量来寻址,而不需要考虑内存中的实际地址。这就使得程序的开发人员更加容易地编写出正确的代码,减少了出错的可能性。
3. 提高程序的可移植性
基址寻址方式使得程序的地址和内存空间彼此分离,这使得程序可以在不同的计算机和 *** 作系统中运行。当程序被加载到内存中时, *** 作系统会自动将程序的基地址和实际内存地址进行映射,使得程序可以正常运行。这就使得程序更加通用,提高了其可移植性。
综上所述,基址寻址方式可以为多道程序设计提供良好的支持,它可以隔离程序的内存空间、简化程序的开发和维护,并且提高程序的可移植性。
1.使用IDA打开DLL时,一开始会d出以下对话框,勾选“Manual load”
2.指定DLL的基址即可
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)