17:01 <@yao> sibling call 一般是函数的最后一句也是call
17:01 < binary> 按照英文,sibling call是call的一个变种,而例子中用jump代替call,这样就不用在堆栈中保存返回地址了,我这样理解不知道对不对??
17:02 <@yao> 比如 int a (int foo){....; if () return Foo1() else return Foo2();};
17:02 <@yao> Foo{1,2}都是sibcall
17:02 <@yao> 每一个port对sibcall的优化都不太一样,
17:03 <@yao> 取决这个port的abi在return的时候的规定
17:03 <@yao> 大体上,你那样说是对的
17:03 < binary> 呵呵
17:04 < binary> 谢谢大家
17:04 <@yao> 比如 b调用了a,a调用了 Foo1 返回的时候,直接返回到b那里
17:07 <@yao> sibcall的条件比较严格,如果Foo1 clobber了a 的caller-save reg,就不能做sibcall optimization了

外部連結

登录