BabyOS
文章平均质量分 87
孤舟钓客
人生如梦,梦何曾醒?不过旧愁新怨。但无他。回首向来萧瑟处,也无风雨也无晴。夜阑风静彀纹平,小舟从此逝,江海寄馀生。
展开
-
AT&T 汇编调用C库函数
注:以下内容为学习笔记,多数是从书本、资料中得来,只为加深印象,及日后参考。然而本人表达能力较差,写的不好。因非翻译、非转载,只好选原创,但多数乃摘抄,实为惭愧。但若能帮助一二访客,幸甚!前面尝试过使用write系统调用来显示CPU Vendor ID,这里将在AT&T 汇编中调用C 库函数中的printf 来打印信息.汇编调用C函数,方法很简单:1)调用就是使用call 指令原创 2012-12-20 00:42:40 · 3706 阅读 · 3 评论 -
AT&T汇编处理字符串
注:以下内容为学习笔记,多数是从书本、资料中得来,只为加深印象,及日后参考。然而本人表达能力较差,写的不好。因非翻译、非转载,只好选原创,但多数乃摘抄,实为惭愧。但若能帮助一二访客,幸甚!一.传送字符串把字符串从一个内存位置复制到另一个内存位置。1.MOVS3种格式:MOVSB:传送单一字节MOVSW:传送一个字(2字节)MOVSL:传送一个双字(4字节)M原创 2012-12-22 01:48:34 · 4439 阅读 · 2 评论 -
AT&T 汇编控制执行流程及与高级语言的转换
注:以下内容为学习笔记,多数是从书本、资料中得来,只为加深印象,及日后参考。然而本人表达能力较差,写的不好。因非翻译、非转载,只好选原创,但多数乃摘抄,实为惭愧。但若能帮助一二访客,幸甚!一.指令指针指令指针确定程序中的哪条指令是应该执行的下一条指令。它按顺序的方式处理应用程序中的指令码。当指令指针在程序指令中移动时,EIP寄存器会递增。程序不能直接修改指令指针。但是可以利原创 2012-12-21 21:15:36 · 2622 阅读 · 0 评论 -
AT&T 汇编数据传送
注:以下内容为学习笔记,多数是从书本、资料中得来,只为加深印象,及日后参考。然而本人表达能力较差,写的不好。因非翻译、非转载,只好选原创,但多数乃摘抄,实为惭愧。但若能帮助一二访客,幸甚!一.定义数据1.数据段程序的数据段是最常见的定义数据元素的位置。使用.data命令声明数据段,.rodata中定义的数据只能按照只读模式访问。在数据段中定义数据元素需要两个语句:一个标签和原创 2012-12-20 02:28:48 · 3292 阅读 · 0 评论 -
babyos (八)—— 简单图形界面
注:以下代码为原创,若发现bug,万望指出,若有问题,欢迎交流,转载请指明出处。若能有助于一二访客,幸甚。欢迎关注babyos 的成长历程和宝贝计划:https://github.com/guzhoudiaoke/babyos/wiki前面已经实现了一个简易的图形库,那么实现一个简单的图形界面是理所当然的事。babyos走的是好玩、可爱、漂亮的路线,怎么好玩怎么来,怎么漂亮怎么原创 2013-01-05 18:20:40 · 3829 阅读 · 0 评论 -
babyos (九) —— 显示bitmap
注:以下代码为原创,若发现bug,万望指出,若有问题,欢迎交流,转载请指明出处。若能有助于一二访客,幸甚。上次完成了基本图形界面的绘制,但没有关闭、最小化、最大化按钮,终究是不爽,而试着用直线、矩形绘制了一个,感觉不好看,于是就到了让baby能够绘制bitmap图像的时候了~结果如下,就是把我现在用的Ubuntu Gnome的一种主题模式的三个按钮截了个图,加载到内存,然后绘制在窗原创 2013-01-06 16:09:11 · 2578 阅读 · 0 评论 -
babyos (十) —— 通过IO端口读取硬盘扇区
注:以下代码为原创,若发现bug,万望指出,若有问题,欢迎交流,转载请指明出处。若能有助于一二访客,幸甚。欢迎关注babyos 的成长历程和宝贝计划:https://github.com/guzhoudiaoke/babyos/wiki上次实现了显示bitmap的功能,却只显示了几个按钮,很不爽,但引导软盘只有1.44M,实在装不下太大的图片。而要想做个桌面背景,需要读原创 2013-01-07 23:05:58 · 9052 阅读 · 0 评论 -
babyos (十一) —— baby, 1/0 = ? (异常和中断)
注:以下程序参考了Linux0.12, linux 2.4, linux 2.6, skelix,但不雷同。以下理论知识来自《Linux内核完全剖析 0.12》先传一张baby的萌照~欢迎关注baby的成长:https://github.com/guzhoudiaoke/babyos/wiki/%E9%9D%92%E6%B6%A9%E6%97%A7%E7%85%A7%E2%80%94%E2原创 2013-01-12 20:45:48 · 3230 阅读 · 0 评论 -
babyos (十二) —— 键盘中断
注:以下代码参考了linux2.6和Orange's(minix),但不雷同。若有bug,欢迎指出。欢迎关注baby的成长:https://github.com/guzhoudiaoke/babyos/wiki为了模仿linux的终端,还专门研究了下如何实现透明效果,结果发现简单的很,就是背景乘上个比例因子加前景乘上个比例因子。1.键盘的工作原理要让原创 2013-01-17 00:15:59 · 5302 阅读 · 0 评论 -
babyos (七)—— 简易图形库
注:以下代码为原创,若发现bug,万望指出,若有问题,欢迎交流,转载请指明出处。若能有助于一二访客,幸甚。与裸机做斗争真是其乐无穷啊~~终究是能画点、线、矩形、圆、填充矩形、字符、汉字、LOGO了。且做了目前我能做到的最好的代码组织。下一步就是用这些函数实现一个简单的界面。整理绘图功能的函数,组织成一个简易的图形库1.绘制点直线、圆、矩形、填充矩形的函数放到原创 2013-01-04 02:29:01 · 4187 阅读 · 0 评论 -
babyos (六)—— 显示ASCII字符和汉字
注:本程序为原创,若发现bug,万望指出,若有问题,欢迎交流,转载请指明出处。若能有助于一二访客,幸甚。本以为要在裸机上显示个汉字是极难的,没想到亲自动手做一下,也不甚难做。“天下事有难易乎?为之,则难者亦易矣,不为,则易者亦难亦” 古人诚不我欺。参考:http://blog.sina.com.cn/s/blog_8c7bf19701010rhn.html《30天自制操作系统》原创 2013-01-02 20:17:12 · 4960 阅读 · 2 评论 -
使用GDB 调试AT&T 汇编
注:以下内容为学习笔记,多数是从书本、资料中得来,只为加深印象,及日后参考。然而本人表达能力较差,写的不好。因非翻译、非转载,只好选原创,但多数乃摘抄,实为惭愧。但若能帮助一二访客,幸甚!调试在编程中是不可缺少的,尝试使用GDB 调试一下昨晚的AT&T汇编代码:liury@liury-laptop:~/program/asm/cpuid$ as -gstabs -o cpuid原创 2012-12-19 19:28:25 · 3139 阅读 · 5 评论 -
Linux 下 AT&T汇编 - Hello World
注:以下内容为学习笔记,多数是从书本、资料中得来,只为加深印象,及日后参考。然而本人表达能力较差,写的不好。因非翻译、非转载,只好选原创,但多数乃摘抄,实为惭愧。但若能帮助一二访客,幸甚!大约一年前第三次尝试自己写一个玩具操作系统内核玩,寒假时写到内存分页,没有搞定,开学后实验室各种事,之后是找实习、实习、找工作、忙实验,一直没有空把它搞定,深以为憾。现在虽然实验还没搞好,但终究按原创 2012-12-19 01:53:27 · 5966 阅读 · 5 评论 -
GNU C内联汇编(AT&T语法)
注:以下内容为学习笔记,多数是从书本、资料中得来,只为加深印象,及日后参考。然而本人表达能力较差,写的不好。因非翻译、非转载,只好选原创,但多数乃摘抄,实为惭愧。但若能帮助一二访客,幸甚!内联汇编提供了可以在C或C++代码中创建汇编语言代码,不必连接额外的库或程序。这种方法对最终程序在汇编语言级别如何实现特定的函数,给予程序员更多的控制权。1.基本的内联汇编1)asm格式原创 2012-12-23 15:59:43 · 7503 阅读 · 0 评论 -
babyos (二)——使用BIOS以及直接写显存绘制图形
注:以下程序系由相应的Intel格式汇编改编而来,略有修改,若发现bug,欢迎指正。若有问题,欢迎交流。若能帮助一二访客,幸甚。一年前仿照Skelix 写过一个简单的内核,并命名为BabyOS。当时代码大部分用的Skelix的,终究有些遗憾,所以想趁今年寒假--工作前最后一个假期,重新实现一下BabyOS,力求尽量用自己的代码实现。所以前几天学习了一下AT&T 汇编、内联汇编及C与汇编原创 2012-12-25 02:00:15 · 6179 阅读 · 7 评论 -
babyos (一)——利用BIOS 中断INT 0x10显示字符和字符串
注:以下程序系原创,使用AT&T格式汇编来调用BIOS 0x10中断,如有错误,欢迎指正。表达能力较差,写的不好,但若能帮助一二访客,幸甚。使用BIOS 显示服务(Video Service)--INT 10H,下面主要探究字符显示模式。BIOS中断在保护模式下是不能用的,故不能在Linux中测试,所以写了个简单的boot loader,并在虚拟机中运行程序。1.以电传原创 2012-12-24 01:35:38 · 14625 阅读 · 4 评论 -
babyos (三)——利用BIOS INT 0x13读取软盘
注:以下程序为原创,若发现任何BUG,欢迎指正;若有问题,欢迎交流;权利归原作者所有,若转载,请注明出处;若能有益于一二访客,幸甚。昨天学习了VGA显示的一些东西,今天准备学习一下读取软盘的知识。1.babyos将使用的引导过程1)系统上电或reset时,处理器执行一些初始化,CPU处于实模式2)处理器会执行一个位于已知位置处的代码,PC中这个位置位于BIOS,它保存在主板上的原创 2012-12-26 02:24:43 · 8549 阅读 · 4 评论 -
babyos (四)—— SVGA、VBE基础与切换到髙分辨率模式
注:以下程序系原创,若有bug欢迎指正,若有问题欢迎交流,转载请注明出处。若能有益于一二访客,幸甚。1.VGAVGA(Video Graphics Array)即视频图形阵列,是IBM在1987年随PS/2机推出的。VGA主要由七大块组成:图形控制器、显示存储器、定序器、CRT控制器、数据串行发生器、属性控制器和数模转换器DAC。2.VBEIBM的VGA标准是显示卡原创 2012-12-29 15:42:32 · 8597 阅读 · 3 评论 -
babyos (五)—— 跳转到保护模式并显示一个LOGO
注:本程序为原创,若发现bug,万望指出,若有问题,欢迎交流,转载请指明出处。若能有助于一二访客,幸甚。以下为结果截图,显示的LOGO为小篆字体的欢迎 baby os 加载完成...几个字。保护模式参考资料:《Intel 64 and IA-32 Architectures Software Developer's Manual》《Orange's 一个原创 2012-12-31 00:54:47 · 4746 阅读 · 1 评论 -
babyos (十三) —— 运行在优先级0 的拼图游戏
注:本程序系原创,若发现bug万望告知,若有问题欢迎交流,转载请注明出处。若能有助于一二访客,幸甚。欢迎关注baby的成长过程:https://github.com/guzhoudiaoke/babyos/wiki前面已经做好了最最基本的键盘中断功能,暂时只能显示字符。而后面需要什么高级的功能,用到时再实现。暂时只在上面做个拼图游戏,以测试前面的代码的工作情况。原创 2013-01-21 19:20:35 · 3033 阅读 · 0 评论