请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:TMS320C6748 工具/软件:TI C/C++编译器
您好,
我想弄清楚为什么这样使用下面代码片段中的分支指令。 分支 位于每个执行数据包的末尾,它应该与执行数据包中的其他指令并行执行,并且不会有条件地执行。 我想这在充分利用管道时是常见的,所有分支指令都执行,但只有一个真正被使用。 请您帮助我了解这种棘手的分行指令用法。
CMBGTU B4, A4, B2 ;gt = den > num || sub A0, B0, A0 ;quotient_shift = 32 - I || SHL A2, A6, A2 ;FIRST_DIV <= I || B loop ; [B1] 零 B2 ;num32 && gt|| [B2] MV B2, B1 ;!(num32 &&!gt) ||[B2] SHRU A2, 1, A2 ;FIRST_DIV >>=1|| B 循环 ; [B2] SHRU B4,1,B4;IF (编号32和gt) den >> 1|||[!B1] SUB A4,B4,A4;IF (编号32和!gt) num == den || B loop;[!B1] SHRU B4,1,B4;IF (编号32和!gt) den >> 1||[B2],A4,SUB ;[b2] SUB,A4; 如果(num32&>) num -= den || CMMPLT B0, 7, B2 ;检查负环计数器 || 子 B0, 7, B1 ;生成环计数 器|| B 环 ; [B2] zero b1 ;zero negative loop counter ||[B0] SUBC A4, B4, A4 ;num = subc (num,den) ||[B0] sub b0, 1, b0 ;I-|| B loop ; loop: [B0] subc A4, B4, A4 ;num = subc (num,den) ||[B0] sub b0 ,b0,b0,b1,b0,b0 ||[B1] 子 B1, 1, B1 ;I-||[B1] B 循环 ;对于
(代码取自TI 7.4 库C6000编译器v.RTS.12中的divu.asm文件)。
谢谢!
Karel