Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 堆栈指针如何从虚拟内存转换为物理内存_Assembly_Paging_Virtual Memory - Fatal编程技术网

Assembly 堆栈指针如何从虚拟内存转换为物理内存

Assembly 堆栈指针如何从虚拟内存转换为物理内存,assembly,paging,virtual-memory,Assembly,Paging,Virtual Memory,我一直在处理大量的汇编程序,在回顾虚拟内存时遇到了一些新的困惑 简单地说,我不理解汇编中的地址(与处理器直接接口的代码)如何从虚拟地址转换为物理地址 我总是被告知,操作系统处理从虚拟内存到物理内存的映射,但程序集直接引用地址而不进行任何系统调用,如果不直接调用,操作系统如何进行干预 地址(mov eax,[0xDEADBEEF])在哪里使用操作系统中的页表从虚拟地址空间转换到物理地址空间,而无需专门调用操作系统?,因为CPU直接支持这种转换,使用。操作系统预先设置这些页表,告诉CPU当它引用内存

我一直在处理大量的汇编程序,在回顾虚拟内存时遇到了一些新的困惑

简单地说,我不理解汇编中的地址(与处理器直接接口的代码)如何从虚拟地址转换为物理地址

我总是被告知,操作系统处理从虚拟内存到物理内存的映射,但程序集直接引用地址而不进行任何系统调用,如果不直接调用,操作系统如何进行干预


地址(mov eax,[0xDEADBEEF])在哪里使用操作系统中的页表从虚拟地址空间转换到物理地址空间,而无需专门调用操作系统?

,因为CPU直接支持这种转换,使用。操作系统预先设置这些页表,告诉CPU当它引用内存地址时应该在哪里查找。翻译就是这样透明地进行的。

因为CPU直接支持这种翻译,使用。操作系统预先设置这些页表,告诉CPU当它引用内存地址时应该在哪里查找。翻译就是这样透明地进行的。

在汇编语言中,您使用的是逻辑地址。操作系统使用页表将逻辑地址映射到物理地址。CPU自动将本地地址转换为物理地址

逻辑地址可能没有映射到它的物理地址。当CPU遇到这种情况时,它会调用操作系统的页面错误处理程序

操作系统必须在辅助存储器上维护进程地址空间的副本。这是“虚拟”内存。发生页面错误时,操作系统将确定虚拟内存中是否存在被引用的页面。如果是这样,页面错误处理程序会将页面读入物理内存,更改页面表,使逻辑地址映射到正确的物理地址,然后重新启动指令


如果虚拟页不存在,操作系统将引发访问冲突异常。

在汇编语言中,您使用的是逻辑地址。操作系统使用页表将逻辑地址映射到物理地址。CPU自动将本地地址转换为物理地址

逻辑地址可能没有映射到它的物理地址。当CPU遇到这种情况时,它会调用操作系统的页面错误处理程序

操作系统必须在辅助存储器上维护进程地址空间的副本。这是“虚拟”内存。发生页面错误时,操作系统将确定虚拟内存中是否存在被引用的页面。如果是这样,页面错误处理程序会将页面读入物理内存,更改页面表,使逻辑地址映射到正确的物理地址,然后重新启动指令


如果虚拟页不存在,操作系统会引发访问冲突异常。

操作系统会事先在CPU中设置映射。CPU自行进行转换,如果出现问题,将引发异常。这就是操作系统如何获得控制权,例如从分页文件加载页面。
x86
x86-64
使用分页:还有osdev文章和英特尔官方手册。邮件或电话转发的方式相同。它会给你留下你知道的地址,但在这个过程中,地址会被同时知道两个地址空间的人更改。堆栈与指令获取与其他非堆栈数据访问无关。mmu转换地址,其中一个主要卖点是软件不知道物理地址,也不关心它的虚拟空间。mmu的位置通常在处理器核心和内存总线之间。操作系统预先在CPU中设置映射。CPU自行进行转换,如果出现问题,将引发异常。这就是操作系统如何获得控制权,例如从分页文件加载页面。
x86
x86-64
使用分页:还有osdev文章和英特尔官方手册。邮件或电话转发的方式相同。它会给你留下你知道的地址,但在这个过程中,地址会被同时知道两个地址空间的人更改。堆栈与指令获取与其他非堆栈数据访问无关。mmu转换地址,其中一个主要卖点是软件不知道物理,也不关心它的虚拟空间。mmu的位置通常在处理器核心和内存总线之间。谢谢,我忘了TLB和mmu是cpu的一部分,而不是OST谢谢,我忘记了TLB和MMU是cpu的一部分,OSI不理解汇编是逻辑地址,我只是对逻辑地址如何在cpu级别转换为物理地址感到困惑,因为我忘记了TLB和MMU是cpu的一部分,我知道汇编是逻辑地址,我只是对逻辑地址如何在cpu级别转换为物理地址感到困惑,因为我忘记了TLB和MMU是cpu的一部分,而对这些表进行故障处理会导致OS查找。