# Clarice **Repository Path**: GeekLeague/Clarice ## Basic Information - **Project Name**: Clarice - **Description**: A pure dynamic language implementation by C# - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-02-06 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Clarice #### 介绍 A pure dynamic language implementation by C# #### 运行逻辑 在开始的时候,虚拟机负责加载字节码,读取常量信息并加载到运行时常量池,包括了字符串,类的信息,常量值,同时将程序指针跳转到主函数入口,开始执行,通常来说一个线程拥有一个thread,每个作用域拥有一个frame,如果需要新建实例化对象,需要通过new指定构造器,相当于调用了构造器函数并返回了索引值,同时在内存中分配了新的对象。构造器函数本身的信息存在于运行时常量池,调用的时候新建frame,同时按照函数本身的信息加载局部变量,将自身的字节码推入正在进行的程序中(或者跳转程序指针?),进行函数本身的运行,如果出现return就返回之前指针的位置,继续运行,同时引用的指针被推入栈顶。需要进行对象的成员调用(如函数、成员变量)需要指明对象,通过索引到对象里进行查找,而静态成员本身储存于运行时常量池