Re:One Line, Three Tricks: Unpacking a Quake 1 Gem
by ferguess_k on Friday March 14, 2025 @11:15AM
(#43363440)
My question is: is it going to produce more efficient assembly code when compiled? Guess I'll have to run it through Godbolt.
[ Parent
| on HN ]
Re:One Line, Three Tricks: Unpacking a Quake 1 Gem
by sepisoad on Friday March 14, 2025 @01:19PM
(#43364795)
i put together something in godbolt and here is the result:
https://godbolt.org/z/sbzPT33nq
“quake” version uses “lea" to pre-increment pointers before storing values. “normal” version uses “add" after storing values.
The “lea" instruction is often faster because it performs an addition in a single cycle without modifying flags, whereas “add" may introduce a dependency.
“quake” version might have a slight edge due to better pipeline efficiency.
“lea" is often preferred over “add" in performance-critical code because it is a single-cycle instruction on modern x86 CPUs.