2.3C54x的中央处理单元(CPU) (3)与算术逻辑运算单元ALU有关的标志位、控制位 反映ALU当前运算结果状态的有4个标志位(STO内): >测试位TCST0(D12) >进位位C一ST0(D11) >溢出标志位OVA-ST0(D10) >溢出标志位OVB一 sTO (D9) 控制ALU工作的有3个控制位(ST1内): >溢出方式位OVM ST1 (D9) >符号扩展位SXM—ST1(D8) >双16位双精度方式位C16一ST1(D7) 26
(3) 与算术逻辑运算单元ALU有关的标志位、控制位 反映ALU当前运算结果状态的有4个标志位(ST0内): 控制ALU工作的有3个控制位(ST1内) : ➢溢出方式位OVM——ST1(D9) ➢符号扩展位SXM——ST1(D8) ➢双16位/双精度方式位C16——ST1(D7) ➢测试位TC——ST0(D12) ➢进位位C——ST0(D11) ➢溢出标志位OVA——ST0(D10) ➢溢出标志位OVB ——ST0(D9) 26 2.3 C54x的中央处理单元(CPU)
(1)进位位C功能: ALU有一个与运算结果有关的进位位C,位于ST0的 11位。进位位C受大多数ALU操作指令的影响,包括算 术操作、循环操作和移位操作。 ①用来指明是否有进位发生: ② 用来支持扩展精度的算术运算; 可作为分支、调用、返回和条件操作的执行条件。 注意:①进位位C不受装载累加器操作、逻辑操作、 非算术运算和控制指令的影响; ② 可通过指令RSBX和SSBX对其复位和置位。 (ii)TC测试控制标志,位于ST0的12位; 27
(i)进位位C功能: ALU有一个与运算结果有关的进位位C,位于ST0的 11位。进位位C受大多数ALU操作指令的影响,包括算 术操作、循环操作和移位操作。 ① 用来指明是否有进位发生; ② 用来支持扩展精度的算术运算; ③ 可作为分支、调用、返回和条件操作的执行条件。 注意:① 进位位C不受装载累加器操作、逻辑操作、 非算术运算和控制指令的影响; ② 可通过指令RSBX和SSBX对其复位和置位。 (ii ) TC测试/控制标志,位于ST0的12位; 27
(ii)溢出标志位(OVA或OVB)位于STQ的10,9位。 >在以累加器A(B)为目的寄存器时的算术逻辑单 元的32位数的运算结果发生溢出,或者乘法加法 单元的操作发生溢出,相应的溢出标志位OVA (或OVB)置1, >直到发生复位、或者是执行以AOV(BOV)和 ANOV(BNOV)为条件的BC[D]、或RCID]、 CC[D]等指令,OVA(OVB)保持置1状态。 >RSBX指令也可以清除OVA标志。 山东大学生物医学工程刘忠国 28
➢ 在以累加器A(B)为目的寄存器时的算术逻辑单 元的32位数的运算结果发生溢出,或者乘法/加法 单元的操作发生溢出,相应的溢出标志位OVA (或OVB)置1, ➢ 直到发生复位、或者是执行以AOV (BOV)和 ANOV (BNOV)为条件的BC[D]、或RC[D]、 CC[D] 等指令,OVA(OVB)保持置1状态。 ➢ RSBX指令也可以清除OVA标志。 (iii)溢出标志位(OVA或OVB)位于ST0的10, 9位。 山东大学生物医学工程刘忠国 28
(iV) 溢出方式位OVM及溢出处理 溢出方式位OVM是ST1的D9位,用来指定ALU运算 结果溢出的处理方式,当溢出产生时: ①若OVM-O,则对ALU的运算结果不作任何 调整,直接送入累加器; ②若OVM=1,则对ALU的运行结果进行调整。 当正向溢出时,将32位最大正数007 FFFFFFFH 装入累加器; 当负向溢出时,将32位最小负数FF80000000H 装入累加器。 ③状态寄存器ST0中与目标累加器相关的溢出标 志OVA或OVB被置1。 29
(iV)溢出方式位OVM及溢出处理 溢出方式位OVM是ST1的D9位,用来指定ALU运算 结果溢出的处理方式,当溢出产生时: ① 若OVM=0,则对ALU的运算结果不作任何 调整,直接送入累加器; ② 若OVM=1,则对ALU的运行结果进行调整。 当正向溢出时,将32位最大正数00 7FFFFFFFH 装入累加器; 当负向溢出时,将32位最小负数FF 80000000H 装入累加器。 ③状态寄存器ST0中与目标累加器相关的溢出标 志OVA或OVB被置1。 29
(V)双16位/双精度方式位C16 位于ST1的D7位。 >若将ST1中的C16置位,则ALU进行双16位算术运算, 即在一个机器周期内完成两个16位数的算术运算, 进行两次16位加法或两次16位减法运算。 >有6条双字算数运算指令支持这一功能(332)。 (V)符号扩展位SXM位于ST1的D8位。 山东大学生物医学工程刘忠国 30
➢ 若将ST1中的C16置位,则ALU进行双16位算术运算, 即在一个机器周期内完成两个16位数的算术运算, 进行两次16位加法或两次16位减法运算。 ➢ 有6条双字算数运算指令支持这一功能(3.3.2)。 (Vi)符号扩展位SXM位于ST1的D8位。 (V)双16位/双精度方式位 C16 位于ST1的D7位。 山东大学生物医学工程刘忠国 30