• ret ,retf ,iret ,int 指令


    ret指令,

    执行过程

    ret指令用栈中的数据,修改IP的值,从而实现近转移。
    CPU执行ret指令时,进行下面两步操作:
    (IP)=((SS)*16+(SP))
    (SP)=(SP)+2;
    另一种用法 ret n (n为整数)
    等效于
    (IP)=((SS)*16+(SP))
    (SP)=(SP)+2;
    (SP)=(SP)+n;
    例如ret 4
    pop ip
    add sp,4
     
    retf指令,
     
    retf用栈中数据同时改CS,IP,远转移

    远返回指令。当它执行时,处理器先从栈中弹出一个字到IP,再弹出一个字到CS。

    最后,callretretf 这三条指令执行后不会对标志位产生影响。

     retf  ->  pop ip
                 pop cs
     
    iret  (interrupt return )  中断返回指令 
     
    1.恢复IP(instruction pointer):(IP)←((SP)+1:(SP)),(SP)←(SP)+2
    2.恢复CS(code segment):(CS)←((SP)+1:(SP)),(SP)←(SP)+2
    3.恢复中断前的PSW(program status word),即恢复中断前的标志寄存器的状态。
    (FR)←((SP)+1:(SP)),(SP)←(SP)+2
    4.恢复ESP(返回权限发生变化)
    5.恢复SS(返回权限发生变化)
     IRET指令影响所有标志位。
     
     
    int 指令
    1) 中断类型号 
    2) 标志寄存器入栈,IF=0.TF=1 
    3) Cs ,ip入栈 
    4) IP=(n*4),CS=(n*4+2)






  • 相关阅读:
    MD5 加密 以及 加盐加密
    github--新手使用错误分析
    iOS开发UI篇—UITabBarController简单介绍
    Xcode 那些简单实用的插件推荐
    app 转caf 音频 代码
    关于block 用法
    iOS 之播放系统声音
    ios如何实现推送通知
    Centos7安装Redis
    SpringCloud-Zuul网关
  • 原文地址:https://www.cnblogs.com/Crisczy/p/7801140.html
Copyright © 2020-2023  润新知