это даёт? Не вижу здесь потенциала для оптимизаций
Это неправда. Порядок вычисления аргументов функции был зафиксирован.
Нет https://en.cppreference.com/w/cpp/language/eval_order
ну наверное для распараллеливания на уровне инструкций
Насколько я знаю, это появилось для того, чтобы типа в нужном порядке аргументы пушить на стек
ну и наверное для этого тоже
void zoo(int* p) foo(bar(), *p, dar()); если не зависит, то вызовы bar dar можно делать в любом порядке, кажется преимущества для оптимизатора таки есть
так лучше ж в регистр, чем на стек (ну если влезет, конечно)
Аргументы передаются через стек в x86: baz(foo(), bar()) => call bar push eax call foo push eax call baz Это если вычислять справа налево. Если потребовать слева направо, будет больше инструкций
но ведь не через стек а через регистры
Через стек (cdecl/stdcall)
ну в сисв их там 6
Обсуждают сегодня