版本:LLVM 7.0.1
LLVM中的Compiler-RT相当于GCC中的libgcc,为目标平台提供其硬件不支持的低级功能的优化实现。
Compiler-RT(RT指运行时)项目用于为硬件不支持的低级功能提供特定于目标的支持。例如,32位目标通常缺少支持64位除法的指令。Compiler-RT通过提供特定于目标并经过优化的功能来解决这个问题,该功能在使用32位指令的同时实现了64位除法。它提供相同的功能,因此是LLVM项目中libgcc的替代品。
——《LLVM编译器实战教程》P17
在源码的lib目录下可以看到它的21个组件:
- asan
- BlockRuntime
- builtins
- cfi
- dfsan
- esan
- fuzzer
- hwasan
- interception
- lsan
- msan
- profile
- safestack
- sancov
- sanitizer_common
- scudo
- stats
- tsan
- ubsan
- ubsan_minimal
- xray
官网的compiler-rt介绍页只提及了其中部分,包括builttins、sanitizer runtimes、profile和BlocksRuntime。下面先介绍该四部分,再补充其余组件。
四则运算、位运算、类型转换、大小比较等基础功能,比如编译32位target时将double转换为64位无符号整型的__fixunsdfdi函数。这些功能的实现或多或少有所优化,有些使用跨平台的C代码,有些直接使用汇编,后一种深度优化执行起来甚至比libgcc更高效。

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



