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

在64位模式下使用不推荐的x86_32指令,x86,x86-64,cpu-architecture,X86,X86 64,Cpu Architecture,不确定这是一个愚蠢的问题,还是这里有一个聪明的把戏 我想使用x86_32'into'(int溢出异常)指令作为我编写的调试器的调试器。我看到这条指令从未真正成为主流,在x86_64中被弃用。我想在x86_64的运行时在程序中执行int溢出检查(我正在动态二进制插装框架上构建此功能) 是否有任何方法可以通过使用一些技巧来使用此指令在x86_64上进行边界检查 我没有重新编译程序的自由,因此排除了所有与编译器相关的标志。不过,我有生成运行时代码的基础设施 我不想在软件中实现这种边界检查(我有自己的理

不确定这是一个愚蠢的问题,还是这里有一个聪明的把戏

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

  • 是否有任何方法可以通过使用一些技巧来使用此指令在x86_64上进行边界检查

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

  • 我不想在软件中实现这种边界检查(我有自己的理由),而是想利用硬件特性

  • 注意:我知道新的Intel MPX指令可用于边界检查,但这些指令尚未广泛使用


    有什么想法吗?

    不推荐使用x64中的

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

    自从第一个8086整数溢出在标志寄存器中处理以来

    有符号值的边界检查使用
    OF
    标志完成,无符号值的边界检查使用
    C
    标志完成

    由于系统内置了所有的
    访问冲突
    检查,因此不再需要
    进入
    。最好是编写异常处理程序。

    可能会问这样的问题:“如何在x86_64程序集中捕获异常”

    它不仅被“弃用”,它还被完全删除,用于64位代码。您只需使用JO和JNO指令检查OF标志。如果你不能编译程序,问这个问题没有什么意义。是的,你是对的,这条指令完全从x86_64中删除了。我不能重新编译,但我可以生成运行时代码。感谢您的投入,我明白了我能用这些做些什么。同样的问题,还有一个问题,关于如何在x86_64上模拟bounds指令功能的投入吗?我正在查阅《英特尔手册》,但没有看到任何有帮助的标志……只需将索引与边界进行比较即可。为了使负索引“过高”,通常可以将索引视为无符号索引。