v8学习笔记(六) 汇编过程
来源:互联网 发布:three.js开发指南摘要 编辑:程序博客网 时间:2024/09/21 09:08
v8汇编过程
根据抽象语法树FunctionLiteral创建Code对象(内含机器指令),返回JSFunction对象.
MakeCode():
1.增加返回语句: Rewriter::Process(FunctionLiteral) 向抽象语法树的语句数 组Body_添加ReturnStatement(返回语句)
2.优化AST: Rewriter::Optimize(FunctionLiteral)优化抽象语法树
3.产生机器码(机器指令)
1.创建代码产生器FullCodeGenerator(AstVisitor的子类 ):
内含汇编器MacroAssembler(根据硬件架构宏来选择相应的汇编器对象).
v8目前支持4个硬件架构: V8_TARGET_ARCH_IA32
V8_TARGET_ARCH_X84
V8_TARGET_ARCH_ARM
V8_TARGET_ARCH_MIPS
2.调用FullCodeGenerator::Generate(CompilationInfo*,Mode)开始汇编
(1)代码产生器访问AST ,根据语义调用汇编器(MacroAssembler)产生相应的机器指令并放入汇编器的缓冲区.
共有5个步骤:
---- 若Mode为PRIMARY,则 Allocate locals
Allocate local context
Allocate arguments object
----Declarations:汇编抽象语法树的Scope中变量和函数声明对象(ZoneList<Declaration*>)
---- Stack check:汇编栈检验语句
---- Body:汇编非声明语句(语句数组的所有语句)
---- return:汇编返回语句
(2)创建一个CodeDesc对象描述产生的机器指令,再创建Code对象Factory::NewCode(….)
struct CodeDesc { byte* buffer; //缓冲地址
int buffer_size; //缓冲大小
int instr_size; //指令总长度
int reloc_size; //重定位信息长度
Assembler* origin; //汇编器
};
|<--------------- buffer_size ---------------->|
|<-- instr_size -->| |<-- reloc_size -->|
+==================+========+==================+
机器指令缓冲 | instructions | free | reloc info |
+==================+========+==================+
4.结尾操作
根据 抽象语法树FunctionLiteral+Code+CompilationInfo创建SharedFunctionInfo ,
再创建JSFunction对象,Handle<JSFunction>转化为API Handle<Script>,返回
- v8学习笔记(六) 汇编过程
- 汇编学习笔记(六)
- v8学习笔记(五) 编译过程
- v8学习笔记(七) 执行过程
- 汇编--学习笔记(六)-指令系统
- v8学习笔记
- 朱老师ARM裸机学习笔记(六):ARM汇编
- 汇编学习笔记:函数调用过程中的堆栈分析
- Oracle学习笔记六:存储过程和触发器
- 项目管理学习笔记之六人力资源管理过程总结
- 软件开发过程学习笔记(六)之测试报告模板
- mybatis学习笔记(六) --- 模糊查询和存储过程
- tensorflow学习笔记(六):cnn过程可视化
- arm v8汇编指令
- v8学习笔记(一) 调用层次
- v8学习笔记(三) 运行时环境
- v8学习笔记(四) 对象机制
- [bx]和 loop 指令——汇编学习笔记(六)
- v8学习笔记(五) 编译过程
- 常用的C#正则表达式
- hey,请问一下,你的棺材是翻盖的还是滑盖的
- Linux探测文本文件的编码方式
- 右键菜单增加“用记事本打开”
- v8学习笔记(六) 汇编过程
- Linux 安装必备
- Gstreamer的一些基本概念与A/V同步分析
- SP2010: SharePoint 2010认证大师考试之---安装配置 Exam 70-667
- 测试书籍 - 《探索式软件测试》
- SQL中join on ...and 和join on ... where
- java正则表达式学习
- v8学习笔记(七) 执行过程
- 你为谁工作-专业、专注才能做大做强