当前位置: 首页 > news >正文

bochs 对 Linux0.11 进行调试 (TODO: 后面可以考虑集成 vscode+gdb+qemu)

我在阅读 Linux0.11 源码时,对一个指令 LDS 感到困惑。

看了下 intel 指令集手册,能猜到 LDS 的功能,但不确定。

于是决定搭建调试环境,看看 LDS 的功能是否真如自己猜测。

首先 make debug 运行 qemu-Linux0.11,命令如下:
在这里插入图片描述

使用 gdb 连接,给 0x7c00 打断点,可以看到汇编指令如图
在这里插入图片描述
跟我们自己看到的 bootsect.s 的汇编指令差别也太大了
在这里插入图片描述

为了验证被加载在程序 0x7c00 的汇编指令到底是不是 bootsect.s 的代码,我决定使用 xxd 看二进制文件的内容

首先根据运行 qemu-Linux0.11 的命令来看,可知它加载了软盘 Image
在这里插入图片描述
xxd Image, 可见第一个 512 字节末尾是 55AA,这确实是启动扇区
在这里插入图片描述
再次运行 gdb-qemu-Linux0.11,使用 x/256x 0x7c00 查看位于 0x7c00 的内存内容,如下
在这里插入图片描述
由于大小端问题,内存内容的排序看起来和 xxd 有点不同,但实际上是一样的。看来 Image 第一个扇区的内容确实被加载到了 0x7c00

阅读 Makefile,发现 Image 的第一个扇区确实是由 bootsect.s 编译出的 bootsect 二进制文件构成的,使用 xxd 查看 bootsect,如下图

在这里插入图片描述

几乎一致,可以确定 bootsect.s 的内容确实被加载到了 0x7c00,那么问题应该出在 gdb 的反汇编上

STFW,在谷歌查到下面这个网页
https://stackoverflow.com/questions/32955887/how-to-disassemble-16-bit-x86-boot-sector-code-in-gdb-with-x-i-pc-it-gets-tr

根据高赞回答,在调试一般的 16 位汇编时,只需要使用 set architecture i8086 命令即可(存疑,已证明不行)

但是 qemu-system-i386 是属于实模式,它会使用段寄存器来进行寻址,gdb 对于这种段寄存器寻址的机制并没有很好的支持,因此在运行 gdb 之前需要先加载一串超长的 gdb.init 脚本

首先使用 wget https://ternet.fr/media/gdb_init_real_mode.txt 下载这个脚本文件,已证明不行

试过了,发现不行。

==============================================

根据前面的探索,使用 qemu+gdb 对 x86 实模式调试非常艰难,我认为我们应该使用 bochs 进行实模式的调试

TODO:here

相关文章:

bochs 对 Linux0.11 进行调试 (TODO: 后面可以考虑集成 vscode+gdb+qemu)

我在阅读 Linux0.11 源码时,对一个指令 LDS 感到困惑。 看了下 intel 指令集手册,能猜到 LDS 的功能,但不确定。 于是决定搭建调试环境,看看 LDS 的功能是否真如自己猜测。 首先 make debug 运行 qemu-Linux0.11,命…...

一文告知HTTP GET是否可以有请求体

HTTP GET是否可以有请求体 先说结论: HTTP协议没有规定GET请求不能携带请求体,但是部分浏览器会不支持,因此不建议GET请求携带请求体。 HTTP 协议没有为 GET 请求的 body 赋予语义,也就是即不要求也不禁止 GET 请求带 body。大多数…...

防止SQL注入攻击的综合解决方案

文章目录 摘要背景和危害性防御措施示例代码(Java)示例代码(PHP)示例MySQL命令示例代码(Python)示例代码(C#,使用Entity Framework) 进一步防御SQL注入攻击的措施使用ORM…...

MapReduce(林子雨慕课课程)

文章目录 7. MapReduce7.1 MapReduce简介7.1.1 分布式并行编程7.1.2 MapReduce模型简介 7.2 MapReduce体系结构7.3 MapReduce工作流程概述7.4 Shuffle过程原理7.5 MapReduce应用程序的执行过程7.6 WordCount实例分析7.7 MapReduce的具体应用7.8 MaReduce编程实践 7. MapReduce …...

PHP聊天系统源码 在线聊天系统网站源码 后台自适应PC与移动端

程序前台与后台自适应PC与移动端,支持一对多交流,可以自由创建新的房间与解散创建的房间,集成签到功能,等级功能,房间创建者可以对用户进行禁言、拉黑处理,房间可以由房间创建者自由设置进入密码&#xff0…...

算法题:买卖股票的最佳时机 II (贪心算法解决股票问题)

这道题是贪心算法的中级难度练习题,由于题目设定,整个价格都是透明的,这里并不涉及需要预测股票涨势的问题。解决思路不难,就是一旦股票价格开始下降了就买入,一旦上升了,就赶紧卖出。(完整题目…...

Redis-持久化机制

持久化机制介绍 RDBAOFRDB和AOF对比 RDB rdb的话是利用了写时复制技术,他是看时间间隔内key值的变化量,就比如20秒内如果有5个key改变过的话他就会创建一个fork子进程(bgsave),通过这个子进程,将数据快照进…...

【LeetCode热题100】--155.最小栈

155.最小栈 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元…...

Allegro 17.2如何直接更新元件封装?

想必很多从事电子设计的小伙伴,都有这样的经历:有些时候原理图和PCB设计是由不同的工程师负责,然后偶尔需要在没有原理图的情况下直接对PCB作品进行操作,如更新元件封装等操作,这种环节不仅费时费力,效率贼…...

高效数据管理:Java助力实现Excel数据验证

摘要:本文由葡萄城技术团队原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 在Java中,开发者可以使用一些开源的库(如Apache POI&#xff09…...

Easysearch Chart 0.2.0都有哪些变化

Easysearch Chart 包更新了,让我们来看看都有哪些变化: Docker 镜像升级 Service 名称调整,支持 NodePort 模式部署 现在让我们用 NodePort 模式部署一下: # helm search repo infinilabs NAME CHART VERSION …...

RV1126-RV1109-进入uboot的按键和名字显示-HOSTNAME

今天添加一个小功能,就是uboot是按CTRLC进入的 今日我做了一个定制,让按L或者l让也进入uboot指令模式,并且修改主板名字显示 默认是CTRLC:键码值是0x03(ASCII对照表) 于是代码中跟踪: //rv1126_rv1109/u-boot/common/console.c int ctrlc(void) { #ifndef CONFIG_SANDBOXif (…...

学习vue-router

可参见: vue-router 详解_vue router_七月J的博客-CSDN博客 https://www.cnblogs.com/chen-ao666/p/17144552.html vue-router的使用 使用vue-router的步骤: 创建路由组件 配置路由映射: 组件和路径映射关系 使用路由: 通过和 <router-link>: 该标签是一个vue-router中…...

Python爬虫提高排名

在如今竞争激烈的互联网时代&#xff0c;网站的SEO优化变得尤为重要。而Python爬虫作为一种强大的工具&#xff0c;可以帮助网站主们提升搜索排名&#xff0c;吸引更多的流量和用户。本文将为您揭秘如何利用Python爬虫来改善您的SEO优化&#xff0c;并帮助您提升搜索排名。无论…...

SQL获取正数第N个或倒数第N个数据

这里我们使用Order By与Limit的组合&#xff1a; Order By&#xff1a;可以将某个序列值按照从大到小或从小到大排序Limit&#xff1a;如果类似Limit 5表示前5个&#xff0c;Limit 3,5表示从第4个位置&#xff08;以0为开始&#xff09;开始往后取5个 通过这样的组合就可以实…...

链表(2)——带头双向循环链表

&#x1f341;一、链表的分类 &#x1f315;1.单向或者双向 &#x1f315;2.带头或者不带头&#xff08;有无哨兵&#xff09; &#x1f315;3.循环或者不循环 &#x1f315;4.无头单向非循环链表&#xff08;常用&#xff09; &#x1f315;5.带头双向循环链表&#xff08;常用…...

C语言 函数指针

函数指针是C语言中的一种特殊类型&#xff0c;它允许你像操作变量一样操作函数。函数指针的主要用途是存储并后续调用一组函数。 在C语言中&#xff0c;函数指针的定义通常如下所示&#xff1a; 返回类型 (*指针变量名)(参数类型) 例如&#xff0c;如果你有一个返回整数并接受…...

F. Vasilije Loves Number Theory

Problem - F - Codeforces 思路&#xff1a;分析一下题意&#xff0c;对于第一种操作来说&#xff0c;每次乘以x&#xff0c;那么nn*x&#xff0c;然后问是否存在一个a使得gcd(n,a)1并且n*a的约数个数等于n&#xff0c;有最大公约数等于1我们能够知道其实这两个数是互质的&…...

electron打包后主进程下载文件崩溃

electronvue3写了一个小项目&#xff0c;实现了一个文件下载功能 存在的问题 打包后&#xff0c;应用下载文件崩溃代码 // 渲染进程window.electron.ipcRenderer.invoke(save-file, {path: r.filePath,fileurl: previewUrl,}).then(response > {console.log(response ----…...

Spring实例化源码解析之Custom Events下集(九)

上集从官网的角度讲解了基本的使用和源码的内容&#xff0c;没有深入的进行分析&#xff0c;本章将从源码的角度分析ApplicationEvent、ApplicationListener、ApplicationEventMulticaster这三者之间的关系。 initApplicationEventMulticaster 上一章后续部分给出了源码的含义…...

四旋翼变形控制:RL与MPC在混合动力学中的对比

1. 四旋翼变形控制的技术挑战与解决方案四旋翼变形控制&#xff08;Quadrotor Morpho-Transition&#xff09;是当前机器人领域最具挑战性的前沿技术之一。这项技术使机器人能够在空中完成形态变换&#xff0c;实现从飞行模式到地面模式的平滑切换。想象一下&#xff0c;一架四…...

STM32单片机学习(27) —— SPI相关概念

文章目录概述SPI通信的核心特性I2C和SPI的简单对比SPI学习的补充说明SPI硬件电路设计SPI的四条通信线SPI通信的片选线低电平选中不支持广播通信SPI通信的时序结构&#xff08;重点&#xff09;SPI通信的比特序通信空闲状态&#xff0c;SPI时钟极性采样时机&#xff0c;SPI时钟相…...

作业本耐用度差距巨大?深圳大明印刷厂拆解合规工艺,告别定制作业本掉页开裂通病

在校园日常教学中&#xff0c;很多学校都会遇到同一个难题&#xff1a;同一学期采购的作业本、定制作业本&#xff0c;品质差距悬殊&#xff0c;有的完好无损用到期末&#xff0c;有的短短几周就出现书脊开裂、页面脱落、边角破损、翻页卡顿等问题。不少人误以为是学生使用习惯…...

ParaView时间戳设置全攻略:从基础标注到自定义格式(5.8.0实测)

ParaView时间戳设置全攻略&#xff1a;从基础标注到自定义格式&#xff08;5.8.0实测&#xff09; 在科学可视化领域&#xff0c;时间戳不仅是数据演变的见证者&#xff0c;更是研究成果呈现的专业语言。ParaView作为开源可视化工具链的标杆&#xff0c;其时间标注功能在学术论…...

Office RibbonX Editor:让Office界面定制变得像搭积木一样简单

Office RibbonX Editor&#xff1a;让Office界面定制变得像搭积木一样简单 【免费下载链接】office-ribbonx-editor An overhauled fork of the original Custom UI Editor for Microsoft Office, built with WPF 项目地址: https://gitcode.com/gh_mirrors/of/office-ribbon…...

神经网络与深度学习 第3周课程总结

深度学习视觉应用课程总结 一、常用计算机视觉数据集数据集名称发布方/年份规模图像规格类别数主要用途核心特点MNIST美国国家标准与技术研究院60k训练10k测试2828灰度图10类(0-9手写数字)入门级图像分类最经典的手写数字识别基准数据集Fashion-MNISTZalando(2017)60k训练10k测…...

如何快速解锁中兴光猫权限:zteOnu工具完整使用指南

如何快速解锁中兴光猫权限&#xff1a;zteOnu工具完整使用指南 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 中兴光猫作为家庭网络的核心设备&#xff0c;其强大的硬件性能常常被默认…...

CentOS 8.5最小化安装后,这5个必做的安全与效率优化设置(附一键脚本)

CentOS 8.5最小化安装后的5个必做安全与效率优化刚完成CentOS 8.5最小化安装的系统就像一张白纸——干净但缺乏生产力。作为运维老手&#xff0c;我见过太多人跳过基础优化直接部署应用&#xff0c;结果在后续使用中频繁遇到权限混乱、软件安装慢、SSH爆破等问题。本文将分享我…...

从NLP到RAG:AI标书生成系统的技术架构与落地路径深度剖析

引言2026年2月&#xff0c;国家发改委等八部门联合印发《关于加快招标投标领域人工智能推广应用的实施意见》&#xff0c;明确到2026年底招标文件检测、智能辅助评标、围串标识别等重点场景在部分省市实现全覆盖。同一时期&#xff0c;《招标投标法》修订草案经国务院常务会议原…...

关于内卷,几个值得深想的洞察

首先声明&#xff1a;这篇不劝躺平&#xff0c;也不教内卷——只是想说清楚&#xff0c;你到底在一个什么样的游戏里。 你以为内卷是“资源不足”&#xff0c;其实是“分配方式” 很多人对内卷有个本质上的认知错误&#xff1a;以为内卷是因为资源不够&#xff0c;大家为了抢资…...