Some memory-bound instructions (namely, those useful for implementing atomic counters) on x86 are allowed to take the LOCK prefix. In binary, this is the "0xf0" byte that precedes the instruction opcode. An explanation of legitimate use: http://www.codemaestro.com/reviews/8 (not definitive but the shortest I could find). The LOCK prefix for MOV between registers is illegal and causes the Undefined Opcode trap (#UD). Bryan Cantrill explains metnions it here: http://markmail.org/message/duppnekq6xf3h26e However, the illegality of LOCK for a certain atomic register exchange instruction was not caught and caused the Pentium processors to enter an inconsistent state and freeze. This became known and the "f0 0f" bug: http://www.x86.org/errata/dec97/f00fbug.htm