我正在寻找用于在x86上的内核模块中调用ABI的官方定义。 我最近看了一个编译模块,惊讶地发现:
它使用寄存器来传递前三个参数( eax
, edx
和ecx
)。
它不像GCC文档中描述的那样fastcall
。 文档说 fastcall
使用ecx和edx(微软风格)。
我能find的唯一有点相关的信息就是这个 ,但是这个信息并不多。
所以:
1)是否有内核模块中使用的ABI官方文档(不是系统调用ABI,而不仅仅是函数列表 – 我find了)。
2)编译器产生这个奇怪的fastcall是怎么回事? 有没有我错过的开关?
-mregparm=3
负责这个。