我不熟悉 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}\nRun Code Online (Sandbox Code Playgroud)\nvector8_inc通过生成其汇编代码并反汇编其二进制文件,我找到了 \n和的段vector32_inc:
g++ -S test.cpp -o test.a -O2\n\nRun 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)