64个汇编输出与GCC?
这个问题在这里已经有了答案:
进入.eh_frame
部分的内容是展开描述符,您只需展开堆栈(例如使用GDB)即可。 在学习装配时,你可以简单地忽略它。 这是一种做你想要的“清理”的方法:
gcc -S -o - test.c | sed -e '/^.L/d' -e '/.eh_frame/Q'
.file "test.c"
.text
.globl main
.type main,@function
main:
pushq %rbp
movq %rsp, %rbp
movl $0, %eax
leave
ret
.size main,.Lfe1-main
您可以尝试将您想要学习的代码放入函数中。
例如:
int ftest(void)
{
return 0;
}
int main(void)
{
return ftest();
}
如果您查看汇编源代码进行测试,它将会像您所需要的那样干净。
..snip..
test:
.LFB2:
pushq %rbp
.LCFI0:
movq %rsp, %rbp
.LCFI1:
movl $0, %eax
leave
ret
..snip..
我发现使用-Os
标志可以让事情更清楚。 我尝试了你的小例子,但它没有什么区别。
也就是说,我记得在我学习装配时(在Sparc上)它很有帮助。
链接地址: http://www.djcxy.com/p/80333.html上一篇: 64 assembly output with gcc?
下一篇: Why does System V / AMD64 ABI mandate a 16 byte stack alignment?