|
|
|
|
|
by vardump
3036 days ago
|
|
> I keep hearing this, and I don't buy it. Did you know that `gcc -O3` will turn `int add(int x, int y) { return a + b; }` into an `lea` instruction? I doubt many people do. Uh. That's a pretty obvious one. Sometimes using address generation ports is preferable to ALU ports. Also 'lea' can load the result in a different register from both operands, 'add' will always need to modify a register. People have been using 'lea' for calculations since dawn of time, for example: shl ebx, 6
lea edi, [ebx*4 + ebx + 0xa0000]
add edi, eax
== y * 320 + x + framebuffer address.This was a common way in DOS days for calculating pixel address in mode 0x13. |
|