相关疑难解决方法(0)

理解空main()的转换为汇编

有人可以解释GCC正在为这段代码做些什么吗?什么是初始化?原始代码是:

#include <stdio.h>
int main()
{

}
Run Code Online (Sandbox Code Playgroud)

它被翻译成:

    .file   "test1.c"
    .def    ___main;    .scl    2;  .type   32; .endef
    .text
.globl _main
    .def    _main;  .scl    2;  .type   32; .endef
_main:
    pushl   %ebp
    movl    %esp, %ebp
    subl    $8, %esp
    andl    $-16, %esp
    movl    $0, %eax
    addl    $15, %eax
    addl    $15, %eax
    shrl    $4, %eax
    sall    $4, %eax
    movl    %eax, -4(%ebp)
    movl    -4(%ebp), %eax
    call    __alloca
    call    ___main
    leave
    ret
Run Code Online (Sandbox Code Playgroud)

如果编译器/汇编大师通过解释堆栈,寄存器和段初始化来启动我,我将不胜感激.我无法从代码中删除头部或尾部.

编辑:我正在使用gcc 3.4.5.命令行参数是gcc -S test1.c

谢谢,kunjaan.

c compiler-construction assembly gcc

15
推荐指数
2
解决办法
4528
查看次数

标签 统计

assembly ×1

c ×1

compiler-construction ×1

gcc ×1