其他分享
首页 > 其他分享> > 操作系统笔记(一)30天自制OS

操作系统笔记(一)30天自制OS

作者:互联网

前言:阅读书籍《30天自制操作系统》时的相关心得体会

1、各种批处理文件的编写和应用,如p23的asm.bat以及p41的makefile

2、c程序经过一系列操作变成机器语言的过程:p60。尤其注意,目标文件其实已经是机器语言文件了,但它还需要链接其他文件才行

3、一个问题:C语言中有没有直接写入指定内存地址的语句,或者说完成这个操作的方法

4、这个操作系统依据的CPU是因特尔的486,汇编语言也是依据486:p65

5、算法:循环生成16进制数:p67

int a[];
for (i=0xa0000;i<0xaffff;i++)
{
a[]=i&0x0f
}
/* i会从00到0f,一直循环

6、让特定二进制位置1、清0、翻转,分别用逻辑或、逻辑与、异或:p68

7、操作系统中界面图像的显示方法:向内存中特定区域(一个地址单元一个像素)写入不同的数字代码,实现每个像素的不同显示,最终组合成一幅完整的图像:p66

8、486的汇编在指定内存地址时,要在写地址时同时标注数据的大小,以确定数据占用以给定地址开始的几个地址单元:p36、p69

大小标识符有BYTE WORD DWORD三个,表示字节、字和双字。
汇编语言例子: MOV WORD[678],123 表示将123送到地址单元为678的地址中,大小为一个字节
C语言例子:之所以在声明指针时要写诸如 char *p 这样的语句,这个char就告知了编译器指针p所指向的数据的大小
注意:不管是char p 还是 intp,说的是指针p所指向的数据所占的大小,p本身的大小是固定的,就是地址总线的宽度,32位计算机就是32位

9、算法:将数组中的元素批次处理x个,比如批次处理3个:p77

int a[16*3]=[初始化赋值];
for(i=1;i<=16;i++)
{
fun(a[0]);
fun(a[1]);
fun(a[2]);
a+=3;
}
/*区别于以往的思路,采用指针的思想,移动数组名指针所指向的位置来完成批次处理的操作

标签:操作系统,30,char,地址,fun,486,OS,指针
来源: https://blog.csdn.net/weixin_42403122/article/details/118787211