gpt4 book ai didi

assembly - x86 中 BND RET 的含义

转载 作者:行者123 更新时间:2023-12-02 14:42:33 26 4
gpt4 key购买 nike

当我突然遇到这个奇怪的指令 bnd ret 时,我正在对 CRT 库(特别是 SEH prolog)进行一些反汇编。谁能解释一下c3(ret操作码)之前的f2前缀的含义吗?

最佳答案

BND 前缀是 Intel MPX (Memory Protection Extensions) 的一部分并指示返回目标(或者一般来说是分支目标,因为 BND 可以应用于任何控制流指令)应根据 BND0 中指定的边界进行检查以BND3 寄存器,否则将生成异常 - 指示潜在的堆栈溢出、编程错误或恶意代码攻击。

在不支持 Intel MPX 的处理器上,或者当 MPX 被禁用时,BND 前缀表现为无操作,因此无需编译两个版本的代码(一个带有以及一个没有 BND 前缀的)。

请注意,BND 前缀的编码与 REPNE 前缀的编码相同(均为 F2h),因此不了解 MPX 的较旧反汇编程序然而,可以将此指令序列显示为REPNE RET(或REPNE JMP、REPNE CALL等)。此用途与REP RET idiom无关。其中前缀被假定为无操作行为,并且纯粹用于解决旧版 CPU 上的性能问题。

关于assembly - x86 中 BND RET 的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43057460/

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