
skyeye
Xalloc
create and share values.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
skyeye动态翻译之translate framework
前面分析了skyeye的打tag过程,之后需要翻译。翻译是将汇编翻译成中间码,当然在具体翻译之前必须创建函数。在llvm基本概念里面函数包含基本块,基本块包含指令。因此翻译之前需要创建函数。cpu_translate_function(cpu_t *cpu, addr_t addr){ BasicBlock *bb_ret, *bb_trap, *label原创 2012-04-07 19:30:44 · 929 阅读 · 0 评论 -
skyeye动态翻译之callout
前面的translate framework中我们重点分析了llvm跟skyeye仿真数据的交互,下面分析下动态翻译过程中怎么实现调用外部c函数。这里先介绍下context。在skyeye仿真中不仅包括指令集的模拟,同时作为一个全系统仿真器,skyeye同时也对mmu,io等进行了,这些代码都是c语言实现的,显然在全系统下动态翻译需要使用外部的mmu,io等函数,这里其实也存在两种基本的策略,一种原创 2012-04-08 17:12:54 · 1040 阅读 · 0 评论 -
skyeye动态编译之translate details
首先分析translate的主流程:translate_all int cur_pos = cpu->dyncom_engine->functions; vector::iterator i = cpu->dyncom_engine->startbb[cur_pos].begin(); for(; i dyncom_engine->startb原创 2012-04-08 16:19:54 · 854 阅读 · 0 评论 -
skyeye动态翻译之tag
skyeye动态翻译过程包括两方面的工作:打tag和翻译。打tag主要目的是扫描出需要翻译代码的边界信息,即基本块的信息。基本块都有一个结束符,包括条件执行,跳转,函数调用等。获取了这些基本块的信息之后接下来要做的工作就是将这些基本块的指令翻译成中间码指令,当然中间码所在的基本块跟翻译之前的基本块也存在一种直接的对应关系。打tag函数函数调用关系:tag_start --> tag_recursi原创 2012-04-07 18:30:08 · 851 阅读 · 0 评论