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)中所描述的许可证。