转载自:Intel的instruction boundaries是什么

SDM中instruction boundaries一词经常出现。如All interrupts are guaranteed to be taken on an instruction boundary。 那么什么是指令的边界呢?一个指令会有边界吗?

在X86中, 使用的是非精简指令,会占用很多的cycle才可以完成一条指令,而且不同的指令占用的cycle数是不同的,复杂的指令会占用很多的cycle才可以完成; 而ARM指令的执行占用固定的cycle。

这里说的是中断会发生在指令的边界上。也就是说, 假如一个复杂的指令需要100个cycle才可以完成逻辑, 但是在第50个cycle发生了中断, 那么中断也会在执行完整个逻辑, 在第100cycle的地方才发生, 而不会在第50cycle的地方立即发生。

OK,理解了之后,看下面这句话, Interrupts are taken at instruction boundaries located during the retirement phase of instruction execution; 这下就好理解了, 中断发生在指令边界上, 也就是发生在指令的”完成阶段”, 完成阶段就是上面指的第100个cycle处。

VM Exit发生在指令边界上吗?

个人认为VM Exit发生在指令边界上。
https://revers.engineering/day-5-vmexits-interrupts-cpuid-emulation/