在64位模式下使用不推荐的x86_32指令

时间:2013-09-01 17:06:29

标签: x86 x86-64 cpu-architecture

不确定这是一个愚蠢的问题还是这里涉及一个聪明的伎俩。

我想对我正在编写的调试器使用x86_32'into'(int溢出异常)指令。我看到这条指令从未真正成为主流,并在x86_64中被弃用。我想在运行时在程序中执行int溢出检查(我在动态二进制检测框架之上构建此功能)x86_64。

  1. 有没有办法使用这个指令通过一些技巧来对x86_64进行边界检查?

  2. 我没有自由重新编译程序,因此排除了所有与编译器相关的标志。我有基础设施来生成运行时代码。

  3. 我不想在软件中实现这个边界检查(我有自己的理由),并希望利用hw功能。

  4. 注意:我知道可以用于边界检查的新的Intel MPX指令,但这些指令尚未普及。

    有什么想法吗?

1 个答案:

答案 0 :(得分:1)

x64中的

INTO已弃用 这是一个的东西,更多的指令(​​例如所有的x87)应该被弃用但遗憾的是没有。

自从Flags寄存器中处理了第一个8086 and even before整数溢出以来。

使用OF标志检查签名值的边界,Bounds使用C标志检查无符号值。

系统内置了所有access violation检查,不再需要INTO。你最好的选择是写一个异常处理程序 也许问一个问题:“如何在x86_64程序集中捕获异常”?