内核杂记

来源:互联网 发布:大数据 消费者洞察 编辑:程序博客网 时间:2024/05/29 04:45
----------------------------------------
读懂了linux0.00 代码。
----------------------------------------
意味着汇编的promote
a. 感叹认知的规律.
    看书,不懂还是不懂,看也看不下去。
    你懂了,也不用看书了。
    此时再看书,发现好书可以参考,赖书就是垃圾。
    所以,好书当字典看,赖书不要看。

    书到用时方恨少,书并不知道你会碰到什么问题,也不知道你处于什么水平。

     能够给予一定帮助的,就是好书。书中描述了100页,可能一页对你有用,就已经够了。

     或者好多页你不懂。这就是现实... 把不懂变成懂,却不是通过看,而是通过练。

     用眼是不过脑子的,用手是通过脑子的。


b. 说一下技术上收获。
    intel 架构, 颠覆了传统意义上汇编单指令单数据模式
    有了功能强大的单指令多数据(例如任务切换)
    多指令单数据(rep 指令,loop 指令。
    其中任务切换(例如以ljmp <tss 选择符>) 让我苦思三天,才豁然开朗。
    不懂之前,就停留在汇编单指令单数据上。
    虽然8086的长跳转,长调用也操作2个以上数据,但从未给我单指令多数据的感觉。
    只有这个任务切换指令,令单指令多数据如此明显,再看int 80h指令
    也已经是小菜一碟了。
    int 80h 的中断门描述符-->段选择符,偏移地址及属性。
    段选择符指向一个内存段的开始地址(段基址),段限长,属性(特权级)
    任务切换伴随着多个寄存器到内存的存储和内存到多个寄存器的加载。
    用软件也可以完成,但intel 用一条指令,用硬件来完成了。

    那么,c 语句可否理解为多指令,多数据操作呢?

   可以,正是这样,只是它是软件实现的。

   宏语句也可以理解为多指令,多数据的。

   软件是这样,硬件也从单指令单数据向宏指令迈进!



c. 学习是在不懂驱使下的试探,练习过程。为了懒惰(为了效率)

d. 后来又阅读了string.h, 对内存和字符操作用汇编写成的函数调用库,

    感叹x386汇编确实很强大,ecx 控制循环 rep 指令相当于实现了c语言for 循环。

    常见的strcpy,strchr,strcat,strpbrk,strstr,strpsn,strtok 的汇编实现。

    c 与 汇编的交相辉映,阅读之,调试之,有收获!


----------------------------------------
彩色显示区的属性: 80*25字符 0xb8000 地址
----------------------------------------
7  6  5  4  3  2  1  0
bl  r  g  b   i  r   g  b
r:red
g:green
b:blue
i:高亮
bl:blink
高nibble, 前景, 低nibble, 背景

红底绿字: 00100100b    0x24
白底黑字: 00000111b    0x07, 常用0x0720来清屏

------------------------------------------------------------
bochs: u switch-mode 可以改变显示方式, 在intel 或 at&t 间切换
------------------------------------------------------------


0 0