信号处理及相关状态恢复机制详解
1. 寄存器信息类型判断
在处理浮点数相关操作时,寄存器中信息的类型判断依据指数位和有效数字位的值。具体规则如下:
-指数位为 0 的情况:
- 若有效数字数组significand[]的四个元素均为 0,则该值为 0,标签tag设为 1。
- 若significand[]中存在非零元素,则寄存器包含特殊浮点数,tag设为 2。
-指数位为其他值的情况:
- 若有效数字的最高有效位被设置,则寄存器中有有效信息,tag设为 0。
- 否则,为特殊浮点数。
-标签字最低有效位的情况:若标签字的最低有效位为 0,则对应寄存器中无信息,tag设为 3。
由于需要 2 位来表示标签值的范围,所以将标签值左移适当位数后加到ret中以便最终返回。ret是一个无符号长整型,其高位 16 位在初始化时已设置。每次循环处理完一个标签值后,会使twd的下一位可用于检查,接着进入下一轮循环。ret低 16 位中的每一对位代表为特定寄存器计算的标签值。
以下为该过程的 mermaid 流程图: