我想在 Linux x86_64 服务器上模拟 iret 条件。我发现有三个指令
- iret:操作数大小 16
- iretd:操作数大小 32
- iretq:操作数大小 64
我无法区分它们,以及使用哪一个。感谢任何人的帮助!
我还有一个关于模拟 iret 的问题,你能看看吗?http://stackoverflow.com/questions/11756274/how-to-simulate-a-iret-on-linux-x86-64
我想在 Linux x86_64 服务器上模拟 iret 条件。我发现有三个指令
我无法区分它们,以及使用哪一个。感谢任何人的帮助!
我还有一个关于模拟 iret 的问题,你能看看吗?http://stackoverflow.com/questions/11756274/how-to-simulate-a-iret-on-linux-x86-64
从这个链接:
IRET 通过从堆栈中弹出 IP(或 EIP)、CS 和标志从中断(硬件或软件)返回,然后从新的 CS:IP 继续执行。
IRETW 将 IP、CS 和标志分别弹出 2 个字节,总共从堆栈中取出 6 个字节。IRETD 将 EIP 弹出 4 个字节,再弹出 4 个字节,其中顶部两个被丢弃,底部两个进入 CS,并将标志也作为 4 个字节弹出,从堆栈中取出 12 个字节。
IRET 是 IRETW 或 IRETD 的简写,具体取决于当时的默认 BITS 设置。
IRETQ 也非常相似