立即數運算元與地址位移量(U 管道)

Prev_Imm_Disp 表示奔騰(R) 處理器的一種配對限制衝突。(此配對限制衝突不適用于含 MMX(TM) 技術的奔騰處理器)。

前一條發到 U 管道的指令有一個立即數運算元,並且有一個地址位移量(在地址計算中)時,Prev_Imm_Disp 會發給目前指令。因此,前一條指令無法同此指令或其它任何指令配對。

建議

將使用記憶體運算元的指令替換成使用暫存器運算元的等效指令序列。通過使用帶暫存器運算元的指令,可以提高程式碼中的配對數。

示例:

原始程式碼

週期

優化程式碼

週期

1. add eax, 3 2. cmp dword ptr [0180000h], 1 3. jnz _tst_if_B2

1 2 4

1. add eax, 3 mov ecx, dword ptr [0180000h] 2. cmp ecx, 1 3. jnz _tst_if_B2

1 1 2 2

“指令 2”同時有一個立即數運算元 (1) 與一個地址位移量 (0180000h)。因此,它無法同“指令 3”配對。
執行時間總計:4 個週期(奔騰(R) 處理器)

MOV 指令將地址位移量複製到暫存器。CMP 指令不再包含地址位移量。因此它可以同 JNZ 指令配對。執行時間總計:2 個週期(奔騰處理器)