我正在学习组装和一些低级的计算工具,作为一个有趣的学习练习。如果VS Studio在调试>寄存器中向我展示了我所有的CPU可用寄存器,那么当我在计算机上进行计算时,在VS Studio中调试的程序之外,为什么寄存器中显示的数据不会改变?我是否正确地假设,计算机所做的任何计算或操作都需要寄存器?那么VS Studio只是在模仿我的CPU寄存器吗?如果没有,那么到底发生了什么呢?
发布于 2020-07-10 21:10:11
您只看到当前线程的寄存器。当Windows将上下文更改为另一个线程或进程,或处理中断时,将保存当前寄存器,并将被切换到的线程的寄存器还原。因此,线程中的寄存器不受运行其他程序(调试器类型程序例外)的影响。
此外,每个进程都在虚拟地址空间上。多进程程序可以在进程之间设置共享的物理内存空间,但是每个进程可能对相同的共享物理内存使用不同的虚拟地址。
某些类型的I/O控制器需要使用物理内存进行传输。虚拟存储器被锁定,然后转换成物理地址和长度的列表,对应于用于虚拟内存的4096字节页。一旦I/O完成,虚拟内存就会被解锁。
https://learn.microsoft.com/en-us/windows-hardware/drivers/kernel/using-mdls
https://stackoverflow.com/questions/62842191
复制相似问题