64个汇编输出与GCC?

这个问题在这里已经有了答案:

  • 如何从GCC / clang组件输出中删除“噪音”? 3个答案

  • 进入.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?