只是出于好奇:值类型通常是复制的,并且 JIT 编译器在调用方法时似乎使用 Microsoft 的 Fastcall 调用约定。这会将前几个参数放入寄存器中,以便快速访问。但是大值类型(即大于寄存器的大小或堆栈的宽度)如何传递给被调用的函数?
这本书的摘录指出:
CLR 的即时代码使用 fastcall Windows 调用约定。这允许调用者在机器的 ECX 和 EDX 寄存器中提供前两个参数(包括实例方法的情况)。
clr calling-convention
calling-convention ×1
clr ×1