zoukankan      html  css  js  c++  java
  • Bochs调试指令

    Bochs

      Bochs就像一台真机一样,处理器在加电之后,要开始取指令并执行指令。
    在这里插入图片描述

    jmpf f000:e05b	;转移目标位置ROM-BIOS
    

      如图在左侧显示了该指令所在的物理内存地址 0x0000fffffff0

      但为什么是0x0000fffffff0?因为和8086不同,现代处理器在加电时,段寄存器CS的内容为,0xF000,指令指针寄存器IP的内容为0xFFF0,这就使得处理器地址线的低20位同样是0xFFFF0。在刚启动时,处理器将其余(高位部分)的地址线强制为高电平。因为当前Bochs虚拟机的地址线是32根,所以,初始发出的物理内存地址就是0x0000fffffff0了。

    单步执行命令s(stop)

      Bochs执行一条指令,然后停下来,同时显示下一条将要执行地指令。
    在这里插入图片描述
      注意,物理地址变了。现代的x86处理器在加电后,所有高端的地址线都被强制为高电平,直至遇到并执行了第一个段间转移指令。

    n 指令

      单步执行有一个缺点,就是会陷入同一条指令地多次重复执行里,这时用n命令,Bochs将自动完成循环过程,并在循环体外地下一条指令前停住。
    在这里插入图片描述

    反汇编命令u

      反汇编地意思是根据机器指令代码生成可读地汇编语言指令,正好与汇编过程相反。u 命令可以使用两个参数,第一个参数是跟在 / 后面地数字,指定返汇编出多少条指令;第二条参数用于指定一个内存地址,Bochs从这里开始反汇编操作。
    在这里插入图片描述

    断点指令 b(break)

      就是事先设置一个(物理)内存地址,当处理器执行到这个地址时,就自动停下来了。然后再输入命令 c(continue) 是持续执行的意思,该命令要求处理器不间断地持续执行指令。
    在这里插入图片描述

    r(register)

      显示通用寄存器地内容
    在这里插入图片描述

    sreg(segment register)

      显示段寄存器地内容
    在这里插入图片描述

    xp(eXamine memory at Physical address)

      即,显示指定物理内存地址处地内容。xp命令每次只显示一个双子。要是显示多个双字,需要用 / 附加一个数据量。然后,还应当指定一个物理内存地址。
    在这里插入图片描述

    info eflags

      用于显示标志寄存器地状态,如果标志寄存器名称是小写,说明该标志为0;否者该标志状态为1。
    在这里插入图片描述

    q(quit)

      退出Bochs调试过程
    在这里插入图片描述

  • 相关阅读:
    Linux 常用命令
    Oracle DG 三种模式(转)
    S5PV2210
    Timer wheel etc.
    SCM etc.
    负载均衡 IO etc.
    Remoting,OData Snippet Compiler等
    displaytag 动态列实现
    <display:column>属性解释
    <display:table>属性解释
  • 原文地址:https://www.cnblogs.com/chengmf/p/12540327.html
Copyright © 2011-2022 走看看