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