开发编程语言(三):源码结构

随笔 2016-07-03

模块构成

Origin源码主要有3个模块构成:

  • 主程序(ORG)
  • 内存管理模块(MEM)
  • Debug模块(DBG)

每个模块基本都会包含多个.c文件,MEM与DBG是通用模块,为了避免命名冲突,有如下规范:

  • 模块名必须有前缀字母开头,如:ORG
  • 类型名,以大写字母开始
  • 变量名/函数名,全部使用小写,单词间用_链接
  • 宏的定义都用大写
  • 对外公开的函数ORG开头,不对外公开org开头
  • 全局变量以org_开头

主程序

各模块中对外公开的接口做成公有头文件的形式,如需要用的解释器就要包含ORG.h,需要内置函数就包含ORG_dev.h

模块中内部使用的类型,宏,函数,则可以声明为私有头文件,以小写字母开头,如origin.h

内存管理模块 MEM

例如a = "a" + "b" + "c"会先生成"ab"然后继续生成"abc",这就意味着这是的"ab"在内存空间是可以被释放的。那么需要做一个机制来自动释放和回收空间。内存管理模块公共函数以MEM_为前缀。

  1. 通过MEM_malloc()可以分配内存空间,按照其他语言的惯例默认填充0xCC。可以确保能够检查出被遗漏的初始化过程。
  2. MEM_realloc()用户扩充内存空间,也会默认填充0xCC
  3. 开辟的内存空间信息用链表形式保存,可以使用MEM_dump_block()将其转储。转储后将MEM_malloc调用的位置的源文件名及行号显示出来。

调试模块DBG

这块暂时不是很清楚,之后与其他人完成编译型的语言后有了比较深入的了解再来补充。


本文由 hongweipeng 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

赏个馒头吧