- 博客(8)
- 收藏
- 关注
原创 INT 15h AX=E820h的用法
简单来说,每执行一次这个指令将会将一个描述内存区域的数据结构保存到ES:DI,然后返回一个ebx,用于确定下一个能够探测的内存区域,当ebx=0时,表示当前已经时最后一个内存区域了。那么ebx的初始值呢,就是设置成ebx=0。其中可能遇到检查发生错误的情况,这个指令就会直接将CF设置为1。下图时输入时各个寄存器的作用:寄存器作用eax功能码,当输入e820h时能够探测内存ebx主要用于指向内存区域,第一次调用时ebx=0,被称为continuation valuees
2020-08-30 15:16:00 1230
原创 WSL2 不能使用Vcxsrv
Unable to init server: Broadway display type not supported: localhost:0Error: cannot open display: localhost:0主要问题是WSL2使用的是VM模式,选上disable access control 和输入参数-ac即可在wsl中设置(可以设置到配置文件中) export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{prin
2020-08-25 14:44:50 2587
原创 30天自制操作系统-第10天 harib09d 关于sheet_refreshsub的详细解释
隔了几天没做实验了,在看sheet_refreshsub的时候,源码还是很明白,但是后面有点不太清楚。所以把自己的理解放上来。这个sheet图层恰好满足那四种情况,以(sht->vx0,sht->vy0)为起点边长分别为bxsize,bysize,图中以(vx0,vy0)到(vx1,vy1)是要刷新的范围,简而言之,就是去掉与当前图层无关的刷新范围,如果如果当前图层起点(x坐标或y坐标)在刷新范围(大矩形框)内,将刷新范围的起始点(对应x坐标或y坐标)从(vx0,vy0)移动到图层的的起始
2020-07-10 01:30:46 203
原创 图的基本概念和Dijkstra算法
最近看离散数学图的部分根据自己的理解,整理了一下笔记图的基本概念这里所说的图是一种抽象的数学概念,并不是图片图像什么的,类似质点的概念,只不过可以用图行化表示出来。比如有四个城市{A,B,C,D},我们想要描述他们之间的公路连通关系,我们画四个点,称为顶点(图中的顶点数>0),表示这四个城市Fig1这也算一个图了,但是顶点之间没有关系,这个关系称为边,这样的图被称为零图,对于没有边的任何一个顶点都是孤立顶点,上面就有A,B,C,D四个孤立顶点。然后在相互之间连线表示互相连通,有以下的图,其
2020-07-09 06:54:34 1376
原创 30天自制操作系统-第9天 harib06d 图解内存释放
其实还是比较简单的,只是纯代码可能不好理解,加上图片就好理解了情况1(左部合并)要释放的内存块(绿色内存区域)左边是空闲的,就将它和左边合并,由于没有内存块数量的变化,就不需要移动内存块,对应的代码部分如下 if (i > 0) { /* 前がある */ if (man->free[i - 1].addr + man->free[i - 1].size == addr) { /* 前のあき領域にまとめられる */ man->free[i - 1].size
2020-07-02 10:35:02 182
原创 30天自制操作系统-第8天 harib05c 关于鼠标3字节数据的详细解释
问题在做这个实验的时候,发现作者在文中介绍的鼠标数据信息不太详细,有一部分代码似懂非懂,但又没有找到具体的教程,经查询资料,终于得到解决,现在放上来方便大家。背景介绍在自制操作系统中使用的是PS/2鼠标,而一开始我在网上查询到的是USB的4字节信息,虽然读着好像差不多,还是有点不放心,后来发现PS/2鼠标数据包刚好是3字节。PS/2鼠标介绍实际上,PS/2鼠标有很多模式,包括Reset,Stream,Remote,Wrap模式,除此之外微软还提供了Intellimouse扩展,但是我们实际只需要关
2020-07-01 19:44:43 334
原创 30天自制操作系统-第7天 harib04f 无法读取键盘
30天自制操作系统-第7天 harib04f 无法读取键盘第7天 harib04f 运行截图原因1原因之二第7天 harib04f 运行截图在CMD中执行了make run之后 ,运行截图如上,虽然执行了鼠标中断void inthandler2c(int *esp),显示了“INT 2C (IRQ-12) : PS/2 mouse”,但是这时候你会发现之前的键盘中断不能用了。原因1在void inthandler2c(int *esp) 的源码中,有个无限for循环,所以一旦执行了这个鼠标中断,
2020-06-30 20:14:36 293
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人