指令將暫存器 REG 用作運算元之一,但由於前一條指令尚未完成值的儲存,因此暫存器值不可用。這會導致管道暫停以等待結果,從而導致指令花費額外的一些週期去執行。
如果可能,請調整前面指令的順序,以填補使用暫存器 REG 的指令執行之前額外的延遲週期。
XSC_REG_REG 中的 REG 可以是 R0, R1, ..., R15。
對於以下示例程式碼,給出 XSC_REG_R8 與 XSC_MULTIPLY_RES 替代 SUB 指令。
彙編程式碼 |
懲罰與警告 |
UMLAL r6, r8, r0, r1 ADD r9, r10, r11 |
|
SUB r2, r8, r9 |
/* XSC_REG_R8; XSC_MULTIPLY_RES */ |
MOV r0, r1 |
|
彙編程式碼 |
懲罰與警告 |
RSB r6, r7, r8 |
|
SBC r10, r9, r6, lsl #0x8 |
/* XSC_REG_R6; XSC_DATAPROC_RES */ |
MUL r2, r3, r4 |
|
SBC r10, r9, r2, lsl #0x8 |
/* XSC_REG_R2; XSC_MULTIPLY_RES*/ |
QDSUB r3, r10, r1 |
|
ADC r12, r11, r5, lsr r3 |
/* XSC_REG_R3; XSC_SATURATED_RES*/ |
LDR r1, [r2, r3] |
|
ADD r4, r1, r5 |
/* XSC_REG_R1; XSC_LDRSTR_RES*/ |