ZHCU876Z July 2001 – October 2023 SM320F28335-EP
当目标具有硬件浮点支持时,某些循环可以转换为称为重复块 (RPTB) 的硬件循环。通常,循环如下所示:
Label:
...loop body...
SUB loop_count
CMP
B Label
同样的循环在转换为 RPTB 循环后如下所示:
RPTB end_label, loop_count
...loop body...
end_label:
重复块循环被加载到硬件缓冲区中,并被执行指定的迭代次数。这种循环的分支开销最小或为零,并且可以提高性能。循环计数存储在特殊的寄存器 RB(重复块寄存器)中,并由硬件无缝地递减计数,而无需指定任何显式减法。因此,不会由于减法、比较和分支而产生开销。唯一的开销是在循环之前执行一次的 RPTB 指令产生的。如果迭代次数为常数,则 RPTB 指令需要一个周期,否则需要 4 个周期。此开销在每个循环中产生一次。
由于缓冲区的存在,有资格成为重复块的循环在最小循环大小和最大循环大小上都受到限制。此外,循环不能包含任何内循环或函数调用。