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的源代码很大,所以冰冻一尺非一日之寒。
- c内核源码阅读准备知识(erlang mudos lua)
- 阅读 Erlang lib_chan 源码
- mudos阅读笔记
- mudos阅读笔记2
- MudOS阅读笔记
- lua 源码探索 准备
- Android内核源码阅读---ashmem.c
- Android内核源码阅读---ashmem.c
- 准备阅读Azureus源码
- Hadoop源码阅读准备
- Lua入门教程 1.准备知识
- 内核源码阅读(六)内核线程
- LUA 源码阅读笔记(一)
- lua源码阅读(1)----概览
- 阅读Lua源码
- 阅读lua源码顺序
- 内核源码阅读(一)进程
- 内核源码阅读(二)进程复制
- html框架代码大全
- VP8简介
- Qt 窗口圆角
- java采用Dom4j读写xml文件
- (转载)提高C#编程水平的50个要点
- c内核源码阅读准备知识(erlang mudos lua)
- android 4.0联系人分析—查找匹配
- 新的一年
- Android EditText 密码输入框可见性设置。
- VS2008中文版安装ASP.NET 3.5 Extensions模板遗失解决方法
- VS2008中使用JSONCPP方法小结
- 软件项目开发组学习研究课题
- Makefile 中的wildcard 函数和patsubst函数
- 别信电影! 告诉你子弹击中人体后真实的威力!