В некоторых случаях он может иметь значение в сгенерированном ассемблерном коде, но (по крайней мере, обычно) не так много.
Например, компилятор Microsoft (обычно) будет использовать то, что они называют thiscall
соглашением о вызовах для функций-членов, в этом случае указатель this
передается в регистр ECX.По умолчанию для глобальных функций используется соглашение о вызовах cdecl
, в котором все параметры передаются в стек.Однако также можно указать компилятору использовать соглашение о вызовах fastcall
, в котором первые два параметра передаются в ECX и EDX соответственно (при условии, что вы передаете имитацию - this
в качестве первого параметра,это заканчивается так же, как thiscall
).
Несколько лет назад (например, 286, 386 таймфреймов), передача параметров в регистры вместо стека сэкономила немало времени.Теперь, когда большинство процессоров имеют по крайней мере несколько мегабайт встроенного кэша, большая часть этой разницы исчезла.