0%

摘要 我们提出一个简单的 SSA 构造算法,它允许直接从抽象语法树或者字节码翻译到一个基于 SSA 的中间表示形式。这个算法不需要事先的分析,且保证在中间表示构造期间是 SSA 的形式。这样允许在构造期间应用基于 SSA 的优化。在完成后,中间表示是最小且纯的 SSA 形式。尽管它很简单,我们算法的运行时间与 Cytron 等人的算法相当。

阅读全文 »

简介

在优化编译器中,数据结构的选择直接影响了实际程序优化的能力和效率。一个糟糕的数据结构选择会禁掉一些优化或者使得编译变慢,则高级优化特性会变得不受欢迎的。最近,静态单一赋值形式 [AWZ88,RWZ88] 和控制依赖图 [FOW87] 被提出用于表示程序的数据流和控制流属性。这些之前不相关的技术每个都为一类有用的程序优化提供了效率和功能。虽然这些结构都很吸引人,但它们的构建难度和它们的潜在大小阻挡了它们的使用[AJ88]。我们提出一种新的算法可以从任意的控制流图中高效计算出这些数据结构。我们给出了分析和实验证明,复杂度与远程程序大小成线性关系。因此,本文强有力的证明了这些数据结构可以实际应用到优化中。

在程序已经转为静态单一赋值形式后,有两个有用的属性:

  1. 一个变量的每个程序员指定变量都会到达该变量的唯一赋值。

  2. 第二节描述的该程序包含的 phi 函数,是用于区分沿着不同传入控制流边传入的变量值。

    阅读全文 »

背景

为了增加虚拟机方面的理论知识,开始了虚拟机相关的论文翻译和学习。先制定个伟大的目标,前期每周一篇翻译,后续在根据学习情况进行论文的总结精炼。

阅读全文 »

拖到春节假期的最后一天写一写去年的总结。

阅读全文 »

1
2
# 压缩 test 目录 到 mn.tar
/f/system/WinRAR/Rar.exe a mn test

摘要

面向对象语言带来许多的益处,其中的抽象性,可以让程序员隐藏来自对象客户端的对象实现细节。不幸的是,在跨越抽象边界如频繁的过程调用中总是伴随着巨大的运行时开销。因此,尽管频繁的使用抽象是这类语言的设计目的,但这是不切实际的,因为,它会导致程序非常低效。

激进的编译器优化会降低抽象的开销。但是优化编译器带来长的编译时间会延长编程环境反馈程序变化的时间。此外,优化也会与源码级别的调试冲突。因此,程序员面临一个两难的选择,不得不在高效的抽象和高效的编程环境之间进行选择。本论文会展示如何通过延迟编译调和这个看起来是矛盾的目标。

阅读全文 »

前言

0.1.5 版本的 V8 代码只是编译成静态库,缺少 shell 程序,不利与调试。本文档尝试在这个版本中加入 shell,实现JS文件的执行。

阅读全文 »