0
我正在使用asmjit,并且遇到了问题。当C++异常被生成的jit代码(x64)中调用的函数抛出时,即使我尝试捕获jit函数调用之外的函数,也无法捕获它,为什么会这样以及如何捕获异常?在asmjit中无法捕捉异常
我正在使用asmjit,并且遇到了问题。当C++异常被生成的jit代码(x64)中调用的函数抛出时,即使我尝试捕获jit函数调用之外的函数,也无法捕获它,为什么会这样以及如何捕获异常?在asmjit中无法捕捉异常
asmjit的作者彼得·Kobalíček通过电子邮件,非常有帮助的答案:
它在很大程度上取决于你的目标操作系统。 AsmJit不提供任何异常处理的助手,所以你需要自己处理异常。
如果您使用的是Windows,你可以检查出: https://msdn.microsoft.com/en-us/library/1eyas8tf.aspx
此外,检查其他JIT引擎如V8可以帮助你理解代码是如何实时编译通常处理异常。在Windows上,您可以为JIT代码使用的整个虚拟地址空间安装异常处理程序,这样您就不必为每个函数嵌入展开数据。
请给我们看[mcve]。 –
我建议将问题更改为更通用的问题,例如“如何处理JIT生成的代码中的异常”,因为它与asmjit没有严格关联 - 我的意思是操作系统要求提供与asmjit相关的解决方案,但问题可以首先以更通用的方式回答,然后展示如何使用asmjit完成。 – Petr