長延遲

long_latency 是一個警告。

此警告表示存在延遲較長的指令。

建議

檢查指令是否可以替換成更高效的指令序列。

例如,乘法有時可以使用 lea 指令來實現,而不使用延遲較長的 imul 指令。

指令

延遲說明

建議

mulimul

整數乘法運算 mul 與 imul 在浮點單元中執行,因此這些指令不應該同浮點指令並行執行。由於在浮點單元中執行,它們還會導致一些額外的延遲。如果上一個週期執行 fmul,則浮點乘法指令 (fmul) 將延遲一個週期。乘法器只能每隔一個週期接受一對新運算元。

將乘以小常數的整數乘法運算替換成兩條或更多 add 與 lea 指令,在這些乘法運算是相關鏈的一部分時,尤其應該這樣做。

示例:

將以下乘法運算:

mov eax, 3
imul ecx, eax

 

替換成:

lea ecx, [ecx+2*ecx]