• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# VIXL
2
3## 简介
4
5VIXL是一个用于生成和解码ARM、AArch64平台指令的开源库。
6
7VIXL包括三个组件:
8
9- 汇编器:在运行时生成AArch64、AArch32 (Arm and Thumb-2) 指令。汇编器抽象了ISA(Instruction Set Architecture)的约束,例如,大多数指令支持即时操作。
10- 反汇编:可以输出汇编程序编译出的指令所对应的反汇编内容。
11- 模拟器:可以模拟AArch64汇编器编译的任何指令。模拟器允许生成的代码在另一个体系结构(如AArch32架构)上运行,而不需要完整的ISA模型。
12
13为了方舟编译器运行时公共组件能够编译ARM、AArch64平台代码,引入了VIXL。
14
15## 接口说明
16
17VIXL的一些常用接口说明:
18- `MacroAssembler`类:用于生成ARM指令的类。它提供了一组函数,用于生成不同类型的指令,如MOV、ADD、SUB等。
19- `Label`类:用于标记指令的类。它提供了一个`Bind`函数,用于将标签绑定到指令地址上。
20- `CodeBuffer`类:是存储生成的指令的类。它提供了一组函数,用于将指令写入缓冲区中。
21
22-  `Decoder`类:是解码ARM指令的类。它提供了一个`DecodeInstruction`函数,用于解码指令。
23
24-  `Instruction`类:是表示ARM指令的类。它提供了一组函数,用于获取指令的不同部分,如操作码、寄存器等。
25
26- `CPUFeatures`类:是表示CPU特性的类。它提供了一组函数,用于设置和查询CPU特性。
27
28更多详细信息可以参考[接口文档](doc/aarch64/supported-instructions-aarch64.md)。
29
30
31## 编译
32
33使用OpenHarmony中编译部件的方式进行编译即可:
341. 主干代码下载
35   ```
36   repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
37   repo sync -c
38   repo forall -c 'git lfs pull'
39   ```
402. 预处理
41   ```
42   ./build/prebuilts_download.sh
43   ```
443. 编译
45   ```
46   ./build.sh --product-name rk3568 --build-target libvixl_frontend_static
47   ```
48   编译生成物对应路径:`out/rk3568/obj/third_party/vixl/libvixl_frontend_static.a`。
49
50## 许可证
51
52本项目遵从[LICENCE](LICENCE)中所描述的许可证。