Find First Set:从低位开始,获取第一个置位的位。如果所有位都是 0,返回 0。如果第一位置位,返回 1,等等:
int __builtin_ffs(int);
直接调用会被 inline。
获取函数的返回地址:
void* __builtin_return_address(int level);
level 为嵌套层数。如果为 0 则返回当前所在函数的返回地址。如果为 1,则返回 caller 的返回地址等等…… 并不是所有的体系结构都支持所有的 level( ARM 中只支持 __builtin_return_address(0)
)。如果 level 不被支持,则会产生编译错误。
ARM 中直接引用 sp
的值:
register unsigned long sp asm ("sp");