CLR / Fastcall: как типы больших значений внутренне передаются вызываемым функциям?
Просто из любопытства: типы значений обычно копируются, и JIT-компилятор, похоже, использует соглашение вызовов Fastcall от Microsoft при вызове метода. Это помещает первые несколько аргументов в регистры для быстрого доступа. Но как типы больших значений (то есть больше, чем размер регистра или ширина стека) передаются вызываемой функции?
Отрывок этой книги говорится, что:
Соединенный код CLR использует соглашение о вызовах fastcall для Windows. Это позволяет вызывающей стороне предоставить первые два аргумента (включаяэто в случае методов экземпляров) в регистрах ECX и EDX машины.