本文介绍了什么是.seh_ *装配命令,GCC输出?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用gcc -S一个Hello World程序。什么是5 .seh_命令?我似乎无法在所有关于他们,当我搜索发现很多信息。

  .filehi.c
    .DEF __main; .scl伪2; .TYPE 32; .endef伪
    .section伪.rdata,博士
.LC0:
    .ascii的Hello World \\ 0
    。文本
    .globl主
    .DEF为主; .scl伪2; .TYPE 32; .endef伪
    .seh_proc主
主要:
    pushq%RBP
    .seh_pushreg%RBP
    MOVQ%RSP,RBP%
    .seh_setframe%RBP,0
    SUBQ $ 32%,可吸入悬浮粒子
    .seh_stackalloc 32
    .seh_endprologue
    调用__main
    leaq .LC0(%RIP),RCX%
    电话看跌期权
    MOVL $ 0,%EAX
    addq $ 32%,可吸入悬浮粒子
    popq%RBP
    RET
    .seh_endproc
    .identGCC:(rubenvb-4.8.0)4.8.0
    .DEF提出; .scl伪2; .TYPE 32; .endef伪


解决方案

这是气体的实施MASM的的了解生成可执行文件的.pdata和.xdata部分(结构化异常处理的东西)。另外,请查阅。很显然,如果你的code可能的SEH开卷操作过程是在栈中,你一定会使用这些。

我发现的的的更多信息。此线程似乎是原来的签入到气体来增加对所有.set_支持*伪欢声笑语。

There is also some hard-core discussion of .xdata and .pdata (along with a bunch of links) at https://sourceware.org/ml/binutils/2009-04/msg00181.html.

这篇关于什么是.seh_ *装配命令,GCC输出?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-21 09:36