嗯,我和一位朋友正在进行一个项目,我们遇到了一个近似的跳跃,然后是nop……是否有在调用某个东西之后暂停的原因?
nop在代码末尾,它会为处理器准备空闲状态吗?
这个问题是关于编码的短跳转是否实际上已经被编码为近跳转。
如果是这样的话,短跳转(3个字节)将在第三个字节上填充。如果在编码时,汇编器知道短跳转的跳转位置实际上是一个近跳转,它会将其编码为近跳转。但是,由于已经为短跳转保留了3个字节,因此需要使用NOP进行填充。
根据汇编架构的不同,它可能存在于对齐后续函数地址的位置,或者是为了防止下一条指令被执行(我相信MIPS会这样做)。有时,在用于本地内存池的函数之后,您还会看到nop和一堆随机数据(ARM)。