如果结果适合 64 位,则 rax 已包含 64 位结果,您无需执行任何操作即可将结果放入 rax 寄存器。但是,如果您只需要一个 64 位结果,那么您应该使用指令的双操作数形式,imul rax, <src>,它更快,因为它不必计算完整的 128 位结果。
如果要处理溢出错误,请jo <error-handler>在乘法之后使用以检查不适合 64 位的结果。这适用于生成 128 位结果的 imul 的单操作数形式,以及生成 64 位结果的二或三操作数形式。但是,如果即使发生溢出也打算丢弃高 64 位,则没有理由使用这种形式的指令。