zoukankan      html  css  js  c++  java
  • 几个汇编指令iret,ret,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

    返回调用处

    例:
    push eax
    call @msg ;call标号是把eip压入堆栈,然后再跳到标号@msg处
    ;[标记1]
    ;继续代码....
    @msg:
    push 0
    push 0
    push eax
    push 0
    call dword ptr [MessageBoxA]
    ret ;这是取出EIP,返回到调用处,继续执行[标记1]
     
     
    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(返回权限发生变化)
     
     
     
    int 指令
    1) 中断类型号
    2) 标志寄存器入栈,IF=0.TF=1 
    3) Cs ,ip入栈
    4) IP=(n*4),CS=(n*4+2)
     
     
     
     
     

    awatch

    指定一个变量,如果这个变量被读或者被写,则暂停程序运行,在调试器中显示信息,并等待下一个调试命令。参考rwatchwatch命令。

    backtrace

    显示函数调用得所有栈框架(stack frames)的 踪迹和当前函数的参数的值,bt是这个命令的简写。

    break

    设置一个断点,这个命令需要指定代码行或者函数名作为参数

    clear

    删除一个断点,这个命令需要制定代码行或者函数名作为参数

    continue

    调试器停止的地方继续执行

    Ctrl-C

    在当前位置停止执行正在执行的程序,断点在当前行

    disable

    禁止断点功能,这个命令需要禁止的断点在断点列表索引值作为参数

    display

    在断点的停止的地方,显示指定的表达式的值。(显示变量)

    enable

    允许断点功能,这个命令需要允许的断点在断点列表索引值作为参数

    finish

    继续执行,知道当前函数返回

    ignore

    忽略某个断点制定的次数。例:ignore 4 23忽略断点423次运行,在第24次的时候中断

    info breakpoints

    查看断点信息

    info display

    查看设置的需要显示的表达式的信息

    kill

    终止当前debug的进程

    list

    显示10行代码。如果没有提供参数给这个命令,则从当前行开始显示10行代码。如果提供了函数名作为参数,则从函数开头显示。如果提供代码行的编号作为参数,这一行作为开头显示。

    load

    动态载入一个可执行文件到调试器。

    next

    执行下一行的源代码的所有指令。如果是函数调用,则也当作一行源代码,执行到此函数返回

    nexti

    执行下一行的源代码中的一条汇编指令

    print

    显示变量的值

    ptype

    显示变量的类型

    return

    强制从当前函数返回

    run

    从程序开始的地方执行

    rwatch

    指定一个变量,如果这个变量被读,则暂停程序运行,在调试器中显示信息,并等待下一个调试命令。参考rwatchwatch命令。

    set

    设置变量的值。例如:set nval=54将把54保存到nval变量中

    step

    继续执行程序下一行源代码的所有指令。如果是调用函数,这个命令将进入函数的内部,单步执行函数中代码。

    stepi

    继续执行程序下一行源代码中的汇编指令。如果是函数调用,这个命令将进入函数的内部,单步执行函数中的汇编代码。

    txbreak

    在当前函数的退出的点上设置一个临时的断点(只可使用一次)。

    undisplay

    删除一个display设置的变量显示。这个命令需要将display list中的索引做参数。

    watch

    指定一个变量,如果这个变量被写,则暂停程序运行,在调试器中显示信息,并等待下一个调试命令。参考rwatchwatch命令。

    whatis

    显示变量的值和类型。

    xbreak

    在当前函数的退出的点上设置一个断点。

  • 相关阅读:
    Redis面试总结
    文件上传文件的权限lnmp 环境配置,尤其整个项目复制过来
    linux cat /etc/passwd 说明
    php上传文件与图片到七牛的实例详解
    一起谈.NET技术,参数编码 完全解决方案 狼人:
    一起谈.NET技术,在.NET中使用域对象持续模式 狼人:
    一起谈.NET技术,从.NET中委托写法的演变谈开去(中):Lambda表达式及其优势 狼人:
    一起谈.NET技术,从扩展方法到流畅的程序体验(一) 狼人:
    一起谈.NET技术,构建高性能ASP.NET站点之一 剖析页面的处理过程(前端) 狼人:
    一起谈.NET技术,ASP.NET MVC 2 验证消息本地化策略扩展 狼人:
  • 原文地址:https://www.cnblogs.com/gaocan/p/5330116.html
Copyright © 2011-2022 走看看