new运算符的汇编输出是什么意思?

时间:2019-04-28 16:27:30

标签: c++

new运算符从堆中返回一些新分配的内存的地址,以保存一些数据,直到不再需要它为止。

使用GCC,我在进行适当的预处理和编译后立即停止了编译器,这是生成的汇编代码。

编译器生成什么(如果有的话)以便动态请求内存?

由于内存管理是由操作系统处理的,因此必须发生某些平台+ CPU特定的进程;流程何时从平台无关(源代码)过渡到依赖平台(内存管理,可执行文件等)?

C ++

int main()
{
    int* x = new int;
}

组装

    .file   "main.cpp"
    .def    __main; .scl    2;  .type   32; .endef
    .text
    .globl  main
    .def    main;   .scl    2;  .type   32; .endef
    .seh_proc   main
main:
.LFB0:
    pushq   %rbp
    .seh_pushreg    %rbp
    movq    %rsp, %rbp
    .seh_setframe   %rbp, 0
    subq    $48, %rsp
    .seh_stackalloc 48
    .seh_endprologue
    call    __main
    movl    $4, %ecx
    call    _Znwy
    movq    %rax, -8(%rbp)
    movl    $0, %eax
    addq    $48, %rsp
    popq    %rbp
    ret
    .seh_endproc
    .ident  "GCC: (x86_64-posix-seh-rev1, Built by MinGW-W64 project) 7.2.0"
    .def    _Znwy;  .scl    2;  .type   32; .endef

0 个答案:

没有答案