make gcc通过寄存器传递参数

KUN*_*KUN 3 c linux gcc

在我的32位x86 Ubuntu11.10上,gcc4.6.3通过堆栈传递参数.是否存在强制gcc通过寄存器传递参数的gcc优化?那gcc怎么做到的?我想要一些细节.

MSa*_*ers 6

相关属性是__attribute__((fastcall)).使用此属性声明的函数将使用ECX中的第一个合格参数和EDX中的第二个参数进行调用.

(我假设是x86.你刚才说了32位,但它涵盖了很多架构,比如ARM).

  • @KUN:显然不是.x86-64使用RCX/RDX代替ECX/EDX(64位),并添加R8和R9.x86没有R8或R9寄存器. (3认同)