11 2010 档案

摘要:保护模式中最重要的一个思想就是通过分级把代码隔离了起来,不同的代码在不同的级别 ,使大多数情况下都只和同级代码发生关系。 Intel的80286以上的cpu可以识別4个特权级(或特权层),0级到3级。数值越大特权越小。一般用把系统内核放在0级,系统的其他服务程序位于1、2级,3级则是应用软件。一般情况下代码都在自己的级别下做自己的工作,同一级别之间可以相互访问,而一般是不允许不同级别的代码间随意访问的。但有时候不同级别的程序之间一定要访问,比如系统的接口函数等,必须能够使得应用程序能够随意调用。于是Intel将代码分为:1.非一致码:受到隔离的代码,只能在同一级别间相互访问2.一致码:不受到隔 阅读全文
posted @ 2010-11-27 19:40 云说风轻 阅读(4252) 评论(1) 推荐(0)
摘要:%macroDescriptor3;有三个参数:【段界限】、【段基址】、【段属性】dw%2&0FFFFh;段界限1(2字节)dw%1&0FFFFh;段基址1(2字节)db(%1>>16)&0FFh;段基址1(1字节)dw((%2>>8)&0F00h)|(%3&0F0FFh);属性1+段界限2+属性2(2字节)db(%1>>24)&0FFh;段基址2(1字节)%endmacro;共8字节看似很简单的结构体理解起来可不是那么简单!【Descriptor结构体】有8个字节。1、【第1、2字节】组合(word)表示该段 阅读全文
posted @ 2010-11-27 18:50 云说风轻 阅读(733) 评论(1) 推荐(0)
摘要:依旧是第三章,看的好慢哦,其实从实模式跳转到保护模式还是很好懂得,主要注意就是跳转指令jmp dword SelectorCode32:0 //而不能是 jmp SelectorCode32:0 因为这时编译出来的是16位代码。如果目标地址的偏移不是0,而是一个较大的值,比如jmp SelectorCode32:0x12345678 则编译后偏移会被截断,只剩下0x5678。 所以,这个特殊的跳转需要特殊的处理。在Linux内核中(Linux使用的是AT&T汇编,不是一般常见的IBMPC汇编),这个跳转是用DB指令直接写二进制代码的方法实现的,而NASM显然提供了更好的解决方法,就.. 阅读全文
posted @ 2010-11-27 16:45 云说风轻 阅读(1361) 评论(0) 推荐(0)
摘要:在《一个操作系统的实现》一书的第三章,两个代码段代码写着写着用就用了align 32,写着写着又不用了,无若我那可怜的汇编功底,压根没见过这是什么指令…… 实际上 align是个负责内存对齐的宏,它会补充一些数据以便下面的数据对齐。align 32 //会被展开成类似 times (((32) - (($-$$) % (32))) % (32)) nop 它就是为了数据对齐的。你使用影响对齐的数据类型后就需要用align填充一下,以便后面的数据可以对齐到边界上。 至于在这里的作用,段首最好是32字节对齐的。不过也不是必须。实模式每段是64kb大小,段寄存器中保存的是地址的高16位,i... 阅读全文
posted @ 2010-11-27 16:07 云说风轻 阅读(438) 评论(0) 推荐(0)
摘要:从昨天起深陷《一个操作系统的实现》这个书不能自拔,这本书可以说再次燃起了我小时候想写操作系统的美好愿望,所以说愿望总是美好的,还进入了大学开始真正去学计算机才发现似乎写操作系统是和我没什么关系的神话,也许还是Linux那孩子太牛叉了吧。 好吧,实现愿望从昨天开始…… 只是虽然本书开始时说学习《一个操作系统的实现》只需要一些C和汇编的知识,但是很遗憾,作者在部分地方写的很不详细,一笔带过,这使阅读本书的我苦恼不已,也许还是我水平太菜了吧。这里这本书我一定一定坚持读下去,遇到问题坚决不放过,百度到可信的答案直至读懂为止,并转贴到本博客,百度或谷歌不到答案的,也必然亲自研究至问题解决未知。比如:《. 阅读全文
posted @ 2010-11-27 15:59 云说风轻 阅读(518) 评论(0) 推荐(0)
摘要:段机制轻松体验 内存寻址: 实模式下的内存寻址: 让我们首先来回顾实模式下的寻址方式 段首地址×16+偏移量 = 物理地址 为什么要×16?因为在8086CPU中,地址线是20位,但寄存器是16位的,最高寻址64KB,它无法寻址到1M内存。于是,Intel设计了这种寻址方式,先缩小4位成16位放入到段寄存器,用到时候,再将其扩大到20位,这也造成了段的首地址必须是16的倍数的限制。 公式:xxxx:yyyy 保护模式下分段机制的内存寻址: 分段机制是利用一个称作段选择符的偏移量,从而到描述符表找到需要的段描述符,而这个段描述符中就存放着真正的段的物理首地址,再加上偏移量 一 阅读全文
posted @ 2010-11-27 13:19 云说风轻 阅读(642) 评论(0) 推荐(0)
摘要:书本第三章第一节是《认识保护模式》,初步讲解了保护模式下全局描述符表GDT、段描述符、段选择子、从实模式进入保护模式等内容。去年看这个的时候,如果不是有以前学习保护模式时做的笔记,还真不好懂呢,因为作者提供的材料不够系统,对仅学习过8086汇编语言的人来说,是不太好理解的。下面的内容大体以我以前做的笔记为纲,较为简略,只说明要点。(本来还可以参考下以前学习保护模式时收集的资料的,很可惜,移动硬盘坏了,资料都没有了,早就该注意信息安全了的。)描述符与描述符表 8086是16位处理器,有16位的寄存器和数据总线,20位的地址总线,寻址能力为1MB。地址由段基址和段偏移两部分组成,段基址和偏移地址都 阅读全文
posted @ 2010-11-27 13:18 云说风轻 阅读(1630) 评论(0) 推荐(1)
摘要:用上了ubuntu后,确实是发现了ubuntu下的一些软件确实没有windows下好,当然,也可能是我没有找到而错怪ubuntu了,比如看pdf吧,可以说这已经成为我生命的一部分了,当然ubuntu下也有比如adobe reader,装个东亚语言包,看是没有问题了,但是我很喜欢福昕阅读器的注释功能,可以把自己的心得体会写出来,想想,要是ubuntu下也可以用就好了,我电脑里已经装了wine了(不知wine为何物的自己百度吧),想装一下试试,点击安装程序,奇迹发生了,福昕阅读器直接运行了,而且运行的很完美,非常完美!只是点击的是安装程序阿,连安装的步骤都没了,郁闷,不管了,能用,^_^ 阅读全文
posted @ 2010-11-24 21:56 云说风轻 阅读(771) 评论(0) 推荐(0)
摘要:今天发现第六届飞思卡尔的群里蛮热闹的,大家都很积极哦,可能我也该开工了吧,带着任务上阵的,说压力,还是有的。明年总决赛在西安,我从小就向往的城市阿,呵呵。加油了…… 阅读全文
posted @ 2010-11-22 22:13 云说风轻 阅读(158) 评论(0) 推荐(0)
摘要:首先,该表达式为错误表达式和未定义表达式。该表达式的解析顺序:++i++ ++ +i++ +i (1)算入优先级的话运算顺序为:(++((i++)++)) + (i++) + i (2)因为编译器在解析字符串时总是向后寻找可能的有意义的串,所以,这个解析式不会被解释为(++i++) + (++i++) + i (3)(2)式中第一个i先后置++得到i++(因为后置++优先级比前置++高),是一个右值,这个中间表达式再后置++就无法编译了,因为++运算符需要左值,而i++是右值(不信可以尝试在代码中写i++++,编译器会告诉你++需要左值)。另一方面,第一个(2)... 阅读全文
posted @ 2010-11-21 14:51 云说风轻 阅读(3449) 评论(2) 推荐(1)
摘要:大师级经典的著作,要字斟句酌的去读,去理解。以前在看K&R的The C Programming Language(SecondEdition)第1.5节的字符输入/输出,被getchar()和EOF所迷惑了。可能主要还是由于没有搞清楚getchar()的工作原理和EOF的用法。因此,感觉很有必要总结一下,不然,很多琐碎的知识点长时间过后就会淡忘的,只有写下来才是最好的方法。其实,getchar()最典型的程序也就几行代码而已。本人所用的环境是DebianGNU/Linux,在其他系统下也一样。一、getchar的两点总结:1.getchar是以行为单位进行存取的。当用getchar进行 阅读全文
posted @ 2010-11-20 16:14 云说风轻 阅读(307) 评论(0) 推荐(0)
摘要:最近开始makefile的学习,可是出师不利,一上来就遇到一个很郁闷的问题,一个很简单的makefile写好后,但是在终端输入make执行时确提示错误。而makefile代码如下: tt : main.o printf1.o printf2.o printf3.o gcc -o tt main.o printf1.o printf2.o printf3.o main.o : main.c include.h gcc -c main.c printf1.o : printf1.c gcc -c printf1.c printf2.o : printf2.c gcc -c pri... 阅读全文
posted @ 2010-11-18 09:32 云说风轻 阅读(361) 评论(0) 推荐(0)
摘要:最近突发奇想,大致的看了看老子集大成之作——《道德经》,很多不认识的字,一眼飘过,有一句深深不得忘怀,就是第五章开头一句:天地不仁,以万物为刍狗 很多人都说上天是公平的,这一句揭示的尤为透彻………… 自己不对自己狠一点,上天也视你如草编的狗一般……天地不仁,以万物为刍狗; 圣人不仁,以百姓为刍狗。天地之间,其犹橐龠乎﹖虚而不屈,动而愈出。 多言数穷,不如守中。 阅读全文
posted @ 2010-11-16 17:33 云说风轻 阅读(257) 评论(0) 推荐(0)
摘要:因为某些原因,虽然使用了ubuntu,但还是不得不在虚拟机下装个xp ,不过一直苦于 非root 无法使用usb设备。 首先确定一点的是virtualbox有两个版本,而apt里的是完全开源的OSE版,是不支持USB设备的,所以如果想使用USB设备就必须自己去官网下载非OSE版(http://www.virtualbox.org/wiki/Linux_Downloads)。 还有就是百度相关文章,基本上找到的都是一样的,比如http://www.360doc.com/content/09/0316/21/73186_2827640.shtml 但是照着做到为/proc/bus/usb设置权.. 阅读全文
posted @ 2010-11-15 20:02 云说风轻 阅读(476) 评论(0) 推荐(0)
摘要:这几天很纠结,纠结于不知道怎么学习了…… 一开始给自己定了两条路两选一,一个是看一本《一个操作系统的实现》这本书,并学着写个操作系统出来,另一个是买个arm的开发板搞bootloader + Linux,就为了这两个东西我应该选哪个想了差不多2个星期,还没有一个结果…… 不过呢,刚刚看《编程高手箴言》里的一段话,突然发现,我是不是有点好高骛... 阅读全文
posted @ 2010-11-15 13:48 云说风轻 阅读(511) 评论(1) 推荐(0)