原文:. Announcing VIXL: A Dynamic Code Generation Toolkit for ARMv8
投稿人 Rod Crawford,2013 年 7 月 10 日
我们很高兴地宣布推出 VIXL 这款面向 ARMv8 的动态代码生成套件,希望能够让 JIT 创建者快速地以全新 ARMv8 的 A64 指令集为目标进行开发。
在过去的几年中,我们(ARM JIT 团队)倾力研究许多领先 JIT 编译器(JavaScript 与 Java 语言)的代码生成工具。在这段时间中,我们在创建良好 JIT 编译器后端中涉及的一些缺陷和时间陷阱上奠定了扎实的知识基础。这使得我们开发出有助于改进我们效率的一些工具。随着 ARM 推出支持 AArch64 执行态的全新 Cortex-A50 系列处理器,我们决定专注于 A64 工具打造,让开发人员能够在实际芯片上市前快速地为这一全新处理器系列移植编程语言虚拟机。
VIXL 包含四个主要组成部分:
运行时宏汇编程序
VIXL 的 MacroAssembler 类实施生成 A64 代码的函数。它支持几乎所有用户空间整数指令,以及大多数浮点指令。它们是我们到目前为止用于从 JIT 编译器生成代码的指令,ARM 一直在研究这些编译器。由于我们提供了工具包的完整源代码,您可以随心所欲地扩展这一汇编程序。
反汇编程序
反汇编程序可以反汇编该汇编程序可以生成的任何指令。
指令集模拟器/调试器
指令集模拟器/调试器允许您运行或单步执行生成的代码,并查看寄存器和内存。该模拟器专门设计为运行 JIT 编译的代码,而不必首先移植整个虚拟机以便在 AArch64 执行态中运行。因此,虚拟机的速度不会受到模拟器速度的大量阻碍,而且您也可以获得非常快的测试周转时间,因为虚拟机的其余部分是本机运行的。
测试和示例
测试附带了除调试器以外的所有 VIXL 组件,确保它们能够在您的平台上正确运作,我们也附上了几个有关如何使用 VIXL 生成代码序列的示例。
使用 VIXL
我们对于 VIXL 的目标是让您能够尽快开始从 JIT 编译器生成 A64 代码。在将虚拟机运行时的其余部分移植到 ARMv8 之前,您就可以生成、测试和运行来自 JIT 编译器的 A64 代码。如果您的运行时已在不同的架构上构建和运行,可以将 VIXL 运行时编译器插入到 JIT 编译器中,将它链接到 VIXL 模拟器,开始生成和执行 A64 代码。
从何处获取 XIXL?
我们已在 Github 上发布了 VIXL(网址为 https://github.com/armvixl/vixl ),其附有 3 句式 BSD 许可证。祝您使用愉快!
Rod Crawford 是 ARM 软件技术主管。他对通过技术赋予人们力量满怀激情,致力于帮助人们获取和交流相关的知识,即有关人们所处时间与地点以及周围人物的知识。Rod 参与移动计算革命已有 22 年,其中 18 年是在 ARM 度过的。Rod 直接面对许多主流开源软件技术和公司,帮助创造随时随地计算和通信的全新精彩方式,因而能够为这一地球村的居民代言。