可执行文件中的程序计数器与主内存中的程序计数器有什么区别?
我的教授举了一个关于可执行文件中的程序计数器及其小数值的例子,他写道,每条指令的PC增加4。
像这样:
那么主内存中的程序计数器呢?小数点的值是什么样的?它们和上面的值一样吗?
谢谢!
答案 0 :(得分:0)
在主存中没有“程序计数器”这样的东西。您可能指的是物理和虚拟内存寻址。
编写和编译程序时,就好像拥有整个内存空间一样。你不关心在同一系统上工作的其他程序,也不用担心写入其他程序的内存空间或写入你的内存空间的其他程序。那怎么样?
这称为virtual memory。每个程序都有自己的虚拟内存空间。程序内的所有地址,无论它们是指令地址(如程序计数器)还是数据地址都在此虚拟内存空间内。另一方面,您的系统有一个实际的物理内存空间,所有程序都将驻留在这些空间中。这些空间之间的转换由操作系统完成(也许是处理器本身的一些支持,具体取决于x86处理器使用名为 TLB 的结构来支持虚拟到物理地址转换。)
您的程序有一个程序计数器,它位于程序的虚拟地址空间中,但在主存储器中,它使用物理地址空间进行寻址。