相关疑难解决方法(0)

GCC C++异常处理实现

我想知道GCC如何实现C++程序的异常处理.我在Web上找不到一篇易于理解和不言自明的文章(尽管Visual C++有很多这样的文章).我所知道的是GCC的实现称为DWARF异常处理.

我编写了一个小的C++程序,并使用以下命令将其转换为程序集:

g ++ main.cpp -S -masm = intel -fno-dwarf2-cfi-asm

main.cpp中main.s文件在这里给出.任何人都可以解释main.s文件的内容,特别是部分.gcc_except_table.eh_frame逐行?(我的操作系统是Ubuntu 13.04 32位.)谢谢!

main.cpp中:

void f()
{
    throw 1;
}

int main()
{
    int j;
    try {
        f();
    } catch (int i) {
        j = i;
    }   
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

电源:

.file "main.cpp"
.intel_syntax noprefix
.text
.globl  _Z1fv
.type   _Z1fv, @function
_Z1fv:
.LFB0:
    push    ebp
.LCFI0:
    mov ebp, esp
.LCFI1:
    sub esp, 24
    mov DWORD PTR [esp], 4
    call    __cxa_allocate_exception
    mov …
Run Code Online (Sandbox Code Playgroud)

c++ assembly gcc exception-handling reverse-engineering

9
推荐指数
2
解决办法
5266
查看次数