long_latency 是一個警告。
此警告表示存在延遲較長的指令。
檢查指令是否可以替換成更高效的指令序列。
例如,乘法有時可以使用 lea 指令來實現,而不使用延遲較長的 imul 指令。
指令 |
延遲說明 |
建議 |
mul 與 imul |
整數乘法運算 mul 與 imul 在浮點單元中執行,因此這些指令不應該同浮點指令並行執行。由於在浮點單元中執行,它們還會導致一些額外的延遲。如果上一個週期執行 fmul,則浮點乘法指令 (fmul) 將延遲一個週期。乘法器只能每隔一個週期接受一對新運算元。 |
|
將以下乘法運算:
mov eax, 3
imul ecx, eax
替換成:
lea ecx, [ecx+2*ecx]