本文介绍了什么是.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输出?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!