gpt4 book ai didi

assembly - 是什么阻止我使用 ASM 跳转到任何绝对地址?

转载 作者:行者123 更新时间:2023-12-02 19:28:39 25 4
gpt4 key购买 nike

是什么阻止我只执行 jmp @9274592,即使它超出了我的程序限制?我不是直接写入CPU吗?我认为在操作系统中到底是什么阻止了命令的执行?

最佳答案

这取决于您的操作系统和硬件。在现代系统上,操作系统控制硬件提供的内存保护

<小时/>

在 20 世纪 80 年代的典型微处理器中,没有任何东西可以阻止对内存空间中任何位置的访问(包括执行),并且错误的代码可能会使机器崩溃。对于具有协作式多任务处理功能的早期单用户计算机(例如 DOS 和最初的 Mac)也是如此。

在现代工作站级机器中,处理器包括 Memory Management Unit (MMU) ,它控制对内存的访问。最广泛使用的机制是virtual memory ,具有每页权限位。每个进程都有自己的虚拟地址空间。

<小时/>

Unix或Linux等操作系统写入MMU来指定当前进程可以读取/写入/执行哪些页面(写入MMU是特权操作,进程本身无法完成)。

跳转到页面中没有执行权限的位置将导致处理器陷阱;这会将处理器切换到特权模式并进入内核,然后内核可以决定要做什么。通常,这意味着向进程发送 SIGSEGV 信号(这就是为什么当程序崩溃时您可能会看到诸如 Segmentation failure 之类的错误消息)。

当多个用户进程在 time-sliced environment 中同时运行时,内核的工作是在每次上下文切换时切换 MMU 内容。费用invalidating the TLB on an address-space switch (and the resulting TLB misses)可能构成分时系统的主要开销。

关于assembly - 是什么阻止我使用 ASM 跳转到任何绝对地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38391606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com