1

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

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

那么,我有两个问题。

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

1 回答 1

1

你担心太多了。推测执行之所以称为推测执行,是因为 CPU 仅在认为值得执行时才执行某些代码,但不能假设代码不会导致任何 CPU 异常。机器代码执行具有严格的顺序、逐条指令的语义,因此 CPU 无法合法地报告(推测的)未来关于(逻辑上)当前指令指针的问题。

于 2015-02-23T10:48:17.633 回答