没有执行的未定义 CPU 指令会导致错误?

Undefined CPU instructions without execution cause bugs?

现在尝试动态调度代码,例如SSE、AVX等。 在二进制文件中,所有将在执行时分派的代码都被捆绑在一起。

我担心不会在 CPU 中执行的代码路径中未定义的 CPU 指令会通过推测执行或其他方式导致意外行为。

那么,我有两个问题。

  1. 通常会CPU推测执行会报错吗?
  2. 没有执行的未定义 CPU 指令会导致错误吗?

你多虑了。 Speculative execution 被称为 speculative 因为 CPU 只有当它认为值得这样做时才执行一些代码,但不能假设代码不会导致任何 CPU 异常。机器代码执行具有严格的顺序、逐条指令语义,因此 CPU 无法合法地报告与(逻辑上)当前指令指针相关的(推测的)未来问题。