c内核源码阅读准备知识(erlang mudos lua)

来源:互联网 发布:c语言循环链表 编辑:程序博客网 时间:2024/06/06 03:58

准备在以后的博客中主要就是写自己对一些源码的学习和理解。那再阅读之前肯定是要准备一些基础的知识的。请看:

1.         c语言

就目前的项目情况来看,无论是erlang还是java还是现在的mudos,虚拟机部分都是用c来实现的,所以呢,对编写人员的c语言掌握要求挺高,不仅需要熟知语法,还要熟悉一些习惯用法和常用技巧,系统函数的调用也必须清楚。


2.         数据结构

在各种源码中,到处可以看到数组、链表、散列表、树的应用,比如hash talbe,生成Bytecode时对树的前序后序遍历。


3.         操作系统

这里的操作系统限于linux unix类的,因为目前的环境都是linux,所以掌握必备的linux基本系统知识和相应的操作指令是需要的。


4.         编译器和调试器

在linux下编译和调试erlang,lua,mudos分别使用gcc和gdb,因此,要想很好的阅读和追踪他们的代码,需要熟练使用这两个工具。如果是在windows下的vs环境的话

也可以(配合插件调试的还挺舒服) ,不过gdb也不麻烦,还是用用吧。


5.         编译技术

这些都是关键了。

1)        词法分析

常用的词法分析是lex/flex,像mudos这种是自己写的词法分析,所以这块也是学习的重点。


2)        语法分析

词法分析用来构造语法树。MudOS的语法分析用到了bison这个工具。整个词法分析,甚至可以说整个虚拟机实现,最复杂的部分要数构造EBNF文法,这不仅需要深刻理解词法分析的理论知识,还必须有丰富的实践经验,构造一个良好的EBNF文法,在我看来,是需要一些天赋的。



3)        语义分析

语义分析部分涉及到:根据编程语言的规则建立其正确性,对编译程序执行的分析以便提高运行效率。这部分的知识实际被用来保证构造一颗正确的语法树。


4)        代码生成

对之前生成的语法树遍历,生成虚拟机所使用的虚拟指令,这方面的知识不仅要对代码生成的相关技术有所了解,还必须对树的遍历非常熟练。mudOS和Java都采用的Bytecode Interpreter。


5)        虚拟堆栈机的构造

这个部分实际上不能算是编译技术的知识,虚拟堆栈机用来将编译后的bytecode解释成物理机的指令,因此,需要了解堆栈机的构造。


6.         网络编程

作为服务端的语言,肯定是网络编程不可缺少的了,不然怎么跟客户端的进行交互呢。网络编程类书籍必不可少。


总结:以上这些呢都是准备知识哇,工作量其实蛮大的,我们一起学习一起研究,终极目标就是弄懂lua,mudos以及erlang虚拟机的工作模式。目前工作打算是从lua先入手,因为lua的源代码结构比较清晰,代码量相对比较少,在熟悉了lua的源码后,就是开始mudos的研究了,这个完全是因为项目的需求,至于erlang,erlang的源代码很大,所以冰冻一尺非一日之寒。

原创粉丝点击