代码之家  ›  专栏  ›  技术社区  ›  Igor Skochinsky

Linux内核模块ABI(x86)

  •  3
  • Igor Skochinsky  · 技术社区  · 12 年前

    我正在寻找用于x86内核模块中调用的ABI的官方定义。我最近查看了一个编译后的模块,惊讶地发现:

    • 它使用寄存器来传递前三个参数( eax , edx ecx )。

    • 不是的 fastcall 如GCC文件中所述。这个 docs say 那个 快速呼叫 使用ecx和edx(微软风格)。

    我能找到的唯一相关信息是 this ,但它并没有说太多。

    因此:

    1) 有没有关于内核模块中使用的ABI的官方文档(不是系统调用ABI,也不仅仅是函数列表——我确实找到了这些)。

    2) 编译器是如何产生这种奇怪的快速调用的?有没有我错过的开关?

    1 回复  |  直到 12 年前
        1
  •  7
  •   adobriyan    12 年前

    -mregparm=3 对此负责。