gcc struct初始化慢组件输出?

时间:2016-02-22 22:55:57

标签: c gcc

给出了使用gcc 5.3.1-Ofast编译的以下测试程序:

#include <stdint.h>

struct foo {
    uint8_t b[8];
    uint64_t q;
} data[256];

int main(void)
{
    unsigned i;

    for (i = 0; i < 256; i++)
        data[i] = (struct foo){{1, 2, 3, 4, 5, 6, 7, 8}, 0};

    return 0;
}

生成的汇编代码使用8个movb指令而不是单个movq指令复制结构的8个字节。这似乎是某种预期的行为,因为当所有值都为0或复制结构时,它使用单个movq指令来写入8个字节,但我找不到任何关于此的信息。

0 个答案:

没有答案