4 ms·
Raymond Chen has a nice article about NOPs that had to be used on the 386 in Windows 95: https://blogs.msdn.microsoft.com/oldnewthing/20110112-00/?p=11773 http
by MarkSweep 10y ago
Raymond Chen has a nice article about NOPs that had to be used on the 386 in Windows 95:
https://blogs.msdn.microsoft.com/oldnewthing/20110112-00/?p=11773 https://blogs.msdn.microsoft.com/oldnewthing/20110112-00/?p=...
- gavinpc 10y agoMan, that guy has some war stories—and an incredible memory.
- dingo_bat 10y ago> For example, there was one bug that manifested itself in incorrect instruction decoding if a conditional branch instruction had just the right sequence of taken/not-taken history, and the branch instruction was followed immediately by a selector load, and one of the first two instructions at the destination of the branch was itself a jump, call, or return. My brain hurts imagining how they figured out and verified that this bug exists.
- jakub_h 10y agoJudging from the Matt Dillon case, a lot of "nah, the bug must be in my code" must have been involved.
- greglindahl 10y agoI used crashme to discover a bug in the Broadcom Sibyte CPU that depended on branch prediction history.
- dingo_bat 10y agoI'd love to read details about your experience. Have you had a chance to write it up?
- greglindahl 10y agoI never wrote it up. The only weird thing about it was that unmodified crashme wouldn't run because of a prefetch bug in the silicon, plus there was a debugging trap that wasn't handled in the kernel. I added a trivial handler for the trap and pre-processed the randomly-generated crashme code to nop prefetches... 15 seconds later, I saw the hang.