According to the Wikipedia page for the 8087, the coprocessor may potentially crash an XT-class machine if it's given an undefined opcode.
According to an earlier thread here, the 8087 in practice executes a NOP if it finds the 0xD8 escape code sequence. Because assemblers in practice will add FWAIT after floating point instructions, I assume that the reason a crash might occur is one of two reasons:
Can anyone confirm whether either of the two above reasons are correct? What makes it so the same thing doesn't happen if a 287 or 387 gets a bad instruction? How does the processor know to ignore it and continue without contention (due to a bad opcode making the 2/387 execute garbage) occurring?
According to an earlier thread here, the 8087 in practice executes a NOP if it finds the 0xD8 escape code sequence. Because assemblers in practice will add FWAIT after floating point instructions, I assume that the reason a crash might occur is one of two reasons:
- Bus contention due to the FPU executing garbage as the 8088 continues processing.
- The FPU never signaling that it's "done" via NMI (which makes making sure NMI is enabled vital!).
Can anyone confirm whether either of the two above reasons are correct? What makes it so the same thing doesn't happen if a 287 or 387 gets a bad instruction? How does the processor know to ignore it and continue without contention (due to a bad opcode making the 2/387 execute garbage) occurring?