ABI / C ++运行时在其他动态库中发生异常时说了什么?

时间:2016-02-04 20:25:24

标签: c++ exception-handling abi

简介:

“二进制应用程序”从“动态库”调用另一个函数。

异常处理是reallife中函数ABI的一部分吗?

详细

调用约定包括:

  1. 如何在函数CALL
  2. 之前推送参数和where参数
  3. 参数传输和返回代码的寄存器。
  4. Callee-save register
  5. 什么寄存器是临时的,不需要保存
  6. 如何处理一些异常寄存器(ST *,XMM *)
  7. 但是如果发生异常将会是什么?

    我对使用C ++语言编写的应用程序和动态库更感兴趣 并通过相同或不同的工具链进行编译。

    异常下我的意思是不是ALU,而是MMU异常。它只是通过C#/ C ++中的“throw”或python中的“raise”创建的程序异常。

1 个答案:

答案 0 :(得分:1)

是的,这是ABI for C ++的一部分。否则,异常就不能安全地跨越二进制文件之间的边界。

以下是一个例子:https://mentorembedded.github.io/cxx-abi/abi-eh.html