iret和iretd之间的区别是什么?

hel*_*lwq 5 x86 assembly linux-kernel

我想模拟Linux x86_64服务器上的iret条件.我发现有三条指令

  1. iret:操作数大小16
  2. iretd:操作数大小32
  3. iretq:操作数大小64

我无法区分它们,以及使用哪一个.谢谢任何人的帮助!!

我有另外一个关于模拟iret的问题,你能看看吗?http://stackoverflow.com/questions/11756274/how-to-simulate-a-iret-on-linux-x86-64

GJ.*_*GJ. 9

从这个链接:

IRET通过弹出IP(或EIP),CS和堆栈标志从中断(硬件或软件)返回,然后从新的CS:IP继续执行.

IRETW将IP,CS和标志分别弹出2个字节,共计6个字节.IRETD将EIP弹出为4个字节,弹出另外4个字节,其中前两个被丢弃,后两个进入CS,并将标志弹出4个字节,从堆栈中取出12个字节.

IRET是IRETW或IRETD的简写,具体取决于当时的默认BITS设置.

与IRETQ非常相似