memesearch
Когда move превращается в ассемблер

Когда move превращается в ассемблер

Download Find similar pictures
Text on the meme
#include <string> inline std::string bin(std::string val) { val.append("Hello C++ Russia"); return val; } std::string goo(std::string s) { return bin(bin(bin(std::move(s))))); } mov rax, r12 pop rbp pop r12 ret mov rbp, rsp lea rdi, [rsp+128] call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string mov rax, rbx .L5: lea rdi, [rsp+96] call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string jmp .L6 mov rax, rbx .L6: lea rdi, [rsp+64] call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string jmp .L7 mov rax, rbx .L7: lea rdi, [rsp+32] call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string jmp .L8 mov rax, rbx .L8: mov rdi, rsp call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string mov rdi, rbp call _Unwind_Resume
What it means

Слева показан короткий код на C++, который несколько раз вызывает функцию `bin` с `std::move`. Справа компилятор разворачивает эту простую конструкцию в длинный фрагмент ассемблера с множеством вызовов конструкторов строк — шутка о том, что «производительность move» и современный C++ могут выглядеть гораздо сложнее и тяжелее ожидаемого. EN: On the left is a short C++ program that calls the `bin` function several times with `std::move`. On the right, the compiler expands this simple construction into a long assembly fragment with many string-constructor calls—the joke is that “move performance” and modern C++ can look far more complicated and heavyweight than expected.

Objects
Tags
Source
Type
image
Size
800×449 · 46.1 KiB
Mood
саркастичный, абсурдный
Language
en
Added