One of my friends (let’s call him “Bob“) retired from Microsoft many years ago. Bob is an amazing programmer whose skills I remain in awe of. I remember visiting his office one evening with a mutual friend (“Fred”) to catch up on things. When we turned up, he showed us a problem that he was working on. He was doing some sort of fancy graphics effect, but since I’m not a graphics person, I sat down in his guest chair and flipped through some magazines while he talked about the problem with Fred. (Fred being a graphics guru.) They discussed the problem and settled on an algorithm. Or at least I assume that’s what they did, because I wasn’t paying much attention. And then Bob started digging into the algorithm’s implementation. Since this particular effect was in the program’s inner loop, it had to be fast, and at the time this story took place, that meant assembly language. Not just your everyday assembly language, but insane assembly language, pulling crazy tricks like using the stack pointer as a general purpose register (since the x86 has so few registers) and performing multiple operations in parallel with one register. I put down my magazine, and Bob and I sweated out the details. Meanwhile, Fred flipped through a book on Bob’s shelf. That’s how great Bob was. It took two people (Fred and me) to keep up with one Bob.
Anyway, that’s a pretty long introduction to Bob just to get to the real story, which will come tomorrow.
0 comments