Built-In Functions包括abs() fabsf() sqrt()
Intrinsics包括__sat() __fsat() __divf32()
这些函数有可重入性吗,比如在主循环执行__fsat()时,触发中断并在中断内执行__fsat() ,两次执行都会返回正确值吗
Built-In Functions包括abs() fabsf() sqrt()
Intrinsics包括__sat() __fsat() __divf32()
这些函数有可重入性吗,比如在主循环执行__fsat()时,触发中断并在中断内执行__fsat() ,两次执行都会返回正确值吗
您好:
在讨论TMS320F28377S(一种TI的C2000系列DSP处理器)上的内置函数(Built-In Functions)和内在函数(Intrinsics)的可重入性时,我们需要理解几个关键点。
内置函数,如abs()
, fabsf()
, sqrt()
等,在大多数编译器(包括用于TI DSP的编译器)中,都是设计为线程安全或可重入的,但这里的“线程”概念在嵌入式系统中可能不直接适用,因为嵌入式系统通常不运行多线程操作系统。然而,在中断上下文中,可重入性是一个重要的考虑因素。
内在函数,如__sat()
, __fsat()
, __divf32()
等,是编译器提供的特殊函数,用于直接映射到硬件指令或实现特定的硬件加速功能。它们的可重入性取决于它们的具体实现和使用的资源。
__fsat()
用于浮点数饱和),它们很可能是可重入的。然而,如果内在函数依赖于特定的硬件寄存器或资源,而这些资源可能在中断处理中被修改,则它们可能不是完全可重入的。在TMS320F28377S上,内置函数(如abs()
, fabsf()
, sqrt()
)和大多数内在函数(如__fsat()
)在大多数情况下都应该是可重入的,前提是它们不依赖于可能被中断修改的全局或静态状态。