IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 【操作系统课设】《Orange‘S:一个操作系统的实现》编译运行中的关于 disp_str 函数的一些问题 -> 正文阅读

[系统运维]【操作系统课设】《Orange‘S:一个操作系统的实现》编译运行中的关于 disp_str 函数的一些问题


前言

忙碌一天了,来记录一下这两天遇到的错误和解决方案。

首先非常感谢任同学!对解决这个问题提供了莫大的帮助!!!(其实不如说是任同学解决的,嘿嘿,我这里只是借花献佛啦!)

先说一下遇到的问题吧。

问题引入

在写操作系统课程设计《Orange’S:一个操作系统的实现》的时候遇到了如下几个问题。

  • 第五章 g 程序出现乱码
    5g乱码

  • 出现 Exception! --> #PF Page Fault 这样的红色错误
    6a错误

  • Error-----“kernel_main” begins-----
    6a错误

不知道大家有没有遇到这样的错误,反正我是纠结了很久,排查了很多地方都没找到错误。之前通过在网上查询和询问同学也没有得到一个很好的解决方案。

一、排查过程

在今天实验室的时候,李同学去询问任同学这个问题后,我才知道了是 kliba.asm 这个文件的问题。

于是我开始了如下的排查过程。

我找到了这本书对应的这个 kliba.asm 文件第一次出现的地方——第五章 f 程序(第147页)

kliba.asm出现处
我编译运行了一遍这个程序,结果如下:

5f结果
我发现这个结果和书上的相同,没有错误,于是我接着编译运行了后面的 5g(第五章 g 程序),结果如下:

5g错误
发现已经出现了乱码,我找到了对应打印这个字符串的地方。

对应字符串
我思考了一下是不是这个第二个字符串的问题,然后我换成了和第一个字符串一样的字符串,结果打印处理第二个字符串还是乱码。

这个时候我就在想是不是打印字符串函数 disp_str 的问题,我开始去寻找这个函数原本的位置(因为 kliba.asm 这个文件是之前的第三章程序里打包出来的,这一点书上有写,如下图,对应书第147页)

kliba第三章出处
于是我找到了第三章的程序,这个函数在 lib.inc 中(可以在第三章i程序找到),我进行了对比,对比如下。

代码对比
发现这个函数在 kliba.asm 中少了一些东西,好像是出栈和入栈(我也不太懂这个程序)。然后我试着改了一下这个程序,把少的地方加上,然后奇迹出现了,嘿嘿。

5g成功
可以看到 5g 已经没有出现乱码了,接着我又把这个方案用在了后面的第六章和第七章中,发现对应的错误也消失了。

  • 6a 成功运行
    在这里插入图片描述

  • 7a 成功运行
    在这里插入图片描述

目前为止,错误基本上消除了,虽然不太知道原理。

二、解决方案

总结一下,解决方案就是把 kliba.asm 对应的 disp_str 函数和 lib.inc 中的对应函数比较进行修改,具体见上文。再次感谢任同学!

结语

如果大家有更好的解决方案或者知道这个错误的原因的话,欢迎在评论区分享噢,非常感谢大家的阅读!

引用

  • [1] 于渊. Orange’S:一个操作系统的实现 [M]. 北京:电子工业出版社,2009:147.
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-23 11:14:16  更:2021-07-23 11:15:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 23:40:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码