小编Nek*_*ane的帖子

这些“丰富”的汇编代码是用来做什么的,为什么要编译出来呢?

我不熟悉 C++ 编译器的实现,我正在编写这样的 C++ 代码片段(用于学习):

\n
#include <vector>\n\nvoid vector8_inc(std::vector<unsigned char>& v) {\n    for (std::size_t i = 0; i < v.size(); i++) {\n        v[i]++;\n    }\n}\n\nvoid vector32_inc(std::vector<unsigned int>& v) {\n    for (std::size_t i = 0; i < v.size(); i++) {\n        v[i]++;\n    }\n}\n\nint main() {\n    std::vector<unsigned char> my{ 10,11,2,3 };\n    vector8_inc(my);\n    std::vector<unsigned int> my2{ 10,11,2,3 };\n    vector32_inc(my2);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

vector8_inc通过生成其汇编代码并反汇编其二进制文件,我找到了 \n和的段vector32_inc

\n
g++ -S test.cpp -o test.a -O2\n\n
Run Code Online (Sandbox Code Playgroud)\n
_Z11vector8_incRSt6vectorIhSaIhEE:\n.LFB853:\n    .cfi_startproc\n    endbr64\n    movq    (%rdi), %rdx\n    cmpq    8(%rdi), %rdx\n    je  .L1\n    xorl …
Run Code Online (Sandbox Code Playgroud)

c++ assembly compilation disassembly compiler-optimization

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