一些汇编中的 trick

1. PC 总是指向下一条将要被执行的指令,而不是指向正在被执行的指令,这是有道理的,因为执行指令不是一个 atom 过程,而是分成了好多步骤,在执行指令的过程中 cpu 完全有可能将下一条将要执行的指令的地址加载到 PC 中。

2. jg 指令后面跟 rep;ret 两条指令,而不是直接跟 ret 指令,是因为如果直接跟 ret 指令,由于 cpu 存在分支预测机制,但是对于 jump 指令后面跟随的 ret 指令,cpu 无法 predict ret 的地址,所以插入一条 rep 指令,相当于 nop 指令, 并不影响 code 的行为

 

posted @ 2018-11-28 17:36  SKY_VIEW  阅读(309)  评论(0编辑  收藏  举报