小编bar*_*ler的帖子

简单构造函数的复杂编译器输出

我有一个带有两个64位整数成员的struct X和一个构造函数:

struct X
{
    X(uint64_t a, uint64_t b)
    {
        a_ = a; b_ = b;
    }

    uint64_t a_, b_;
};
Run Code Online (Sandbox Code Playgroud)

当我查看编译器输出(在64位Linux上为x86-64 gcc 8.3和x86-64 clang 8.0.0)时,未启用任何优化,我看到了以下针对构造函数的代码。

x86-64 gcc 8.3:

X::X(unsigned long, unsigned long):
    push    rbp
    mov     rbp, rsp
    mov     QWORD PTR [rbp-8], rdi
    mov     QWORD PTR [rbp-16], rsi
    mov     QWORD PTR [rbp-24], rdx
    mov     rax, QWORD PTR [rbp-8]
    mov     QWORD PTR [rax], 0
    mov     rax, QWORD PTR [rbp-8]
    mov     QWORD PTR [rax+8], 0
    mov     rax, QWORD PTR [rbp-8]
    mov     rdx, …
Run Code Online (Sandbox Code Playgroud)

c++ assembly gcc clang compiler-optimization

3
推荐指数
1
解决办法
150
查看次数

标签 统计

assembly ×1

c++ ×1

clang ×1

compiler-optimization ×1

gcc ×1