如果发生饱和,则饱和内在函数运算会定义 SAT 位。通过访问控制状态寄存器 (CSR),可以从 C/C++ 代码中设置和清除 SAT 位。编译器使用以下步骤生成访问 SAT 位的代码。
- SAT 位因函数调用或函数返回而变为未定义。这意味着 CSR 中的 SAT 位是有效的,并且可以在 C/C++ 代码中读取,直到函数调用或函数返回为止。
- 如果函数中的代码访问 CSR,则编译器假定 SAT 位在函数中有效,这意味着:
- SAT 位由禁用软件流水线循环中断的代码维护。
- 理论上,饱和指令不能被执行。
- 如果中断服务例程修改了 SAT 位,则应编写该例程以保存和恢复 CSR。