1
Чому компілятори наполягають на використанні тут збереженого регістру?
Розглянемо цей код C: void foo(void); long bar(long x) { foo(); return x; } Коли я компілюю його на GCC 9.3 з будь-яким -O3або -Os, я отримую це: bar: push r12 mov r12, rdi call foo mov rax, r12 pop r12 ret Вихід з clang ідентичний за винятком вибору rbxзамість …