c - 我们可以为 gcc 上的特定功能添加 `-fcall-used-REG` 吗?
问题描述
我们可以告诉 gcc 特定函数不需要通过函数属性存储/恢复一些被调用者保存寄存器吗?我们可以通过-fcall-used-REGS
文件来判断它,但文件中的所有功能都会受到影响。
我制作了一个汇编代码,其中存储了一些被调用者保存寄存器(例如,x86_64 上的 r12)并希望从 asm 代码中调用一些 C 函数。被调用函数不需要存储/恢复被调用者保存寄存器,因为 asm 代码存储/恢复它们,所以保存被调用者保存寄存器只是开销(被调用函数足够小,所以 pro/epilogue 代码的开销很大)。
解决方案
使用 pragma/attribute 优化可能是可能的,但实际上您应该将函数放在它们自己的文件中。这些函数必须完全独立,因为它们使用的是非默认 ABI。无论如何,将函数放在自己的文件中是一个好习惯。
推荐阅读
- flutter - Flutter Firestore _MapStream
不是 Stream 的子类型 - windows-10 - Xbox 游戏栏资源小部件是开源的吗?
- scala - Scala:扩展“静态”特征的好方法
- javascript - 点击数不增加
- javascript - 如何将多个样式添加到同一个 :style 属性?
- python - 枚举和 Zip 以访问以前的索引
- php - WordPress:将 $query 传递给单独的模板文件
- windows - 使用 `jar` 创建“zip”文件... Mac 无法打开 zip,显示“这是不支持的格式”... 为什么?
- android - 网络 onDisconnect() 方法不适用于自定义回调
- c - C - 制作单独的链式哈希表 - 问题