Linux中有关调用指令的思维导图,包括调用过程指令 CALL、调用溢出处理程序的指令 INTO、调用中断过程指令 INT、加载中断描述符表的指令 LIDT
树图思维导图提供 调用指令思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 调用指令思维导图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:852d0b38a92f216096aa8a1da3c6c773
调用指令思维导图思维导图模板大纲
指令格式
CALL 过程名
i386 在取出 CALL 指令之后及执行 CALL 指令之前,使指令指针寄存器 EIP 指向紧接 CALL 指令的下一条指令
CALL 指令先将 EIP 值压入栈内,再进行控制转移
遇到 RET指令时,栈内信息可使控制权直接回到 CALL 的下一条指令
指令格式
INT 中断向量
EFLAG、CS 及 EIP 寄存器被压入栈内
控制权被转移到由中断向量指定的中断处理程序
在中断处理程序结束时,IRET 指令又把控制权送回到刚才执行被中断的地方
指令格式
INTO
在溢出标志为 1 时,INTO 调用中断向量为 4 的异常处理程序
EFLAG、CS 及 EIP寄存器被压入栈内
控制权被转移到由中断向量 4 指定的异常处理程序
在中断处理程序结束时,IRET 指令又把控制权送回到刚才执行被中断的地方
指令格式
IRET
IRET 与中断调用过程相反
将 EIP、CS 及 EFLAGS 寄存器内容从栈中弹出,并将控制权返回到发生中断的地方
IRET 用在中断处理程序的结束处
指令格式
LIDT 48 位的伪描述符
LIDT 将指令中给定的 48 位伪描述符装入中断描述符寄存器 IDTR
伪描述符和中断描述符表寄存器的结构相同,都是由两部分组成
在低字(低 16 位)中装的是界限,在高双字(高 32 位)中装的是基址
从中断处理程序的内核栈中恢复相应寄存器的值
一个硬件错码被压入堆栈,则先弹出这个值,然后,依次将 EIP、CS 及 EFLSG 从栈中弹出