Relative performance of x86 inc vs. add instruction

前端 未结 4 1636
无人共我
无人共我 2020-12-01 17:05

Quick question, assuming beforehand

mov eax, 0

which is more efficient?

inc eax
inc eax

or

add         


        
4条回答
  •  没有蜡笔的小新
    2020-12-01 17:47

    Two inc instructions on the same register (or more generally speaking two read-modify-write instructions) do always have a dependency chain of at least two cycles. This is assuming a one clock latency for a inc, which is the case since the 486. That means if the surrounding instructions can't be interleaved with the two inc instructions to hide those latencies, the code will execute slower.

    But no compiler will emit the instruction sequence you propose anyway (mov eax,0 will be replaced by xor eax,eax, see What is the purpose of XORing a register with itself?)

    mov eax,0
    inc eax
    inc eax
    

    it will be optimizied to

    mov eax,2
    

提交回复
热议问题