我正在尝试使用基于 LLVM 的
zig cc
为 R4300i / VR4300 MIPS CPU(N64 中的处理器)编译 C 代码(以及最终其他基于 LLVM 的语言,如 Rust/Zig)。但我没有看到任何以 VR4300 作为目标进行编译的证据或示例:
zig targets
中。让我们分解一下您的问题:
LLVM 本身不支持 VR4300 或更广泛的 MIPS R4300i 作为特定目标。 LLVM 中的通用 MIPS 后端可能并不完美适合 VR4300,因为 VR4300 中存在独特的怪癖、特殊指令和协处理器,而这些在更通用的 MIPS 架构中并不存在。
您可以采取以下一些步骤:
LLVM 文档:这通常是最好的第一个检查位置。然而,LLVM 的广度和深度可能使其难以导航。
LLVM 源代码:查看 LLVM 源代码并导航到
lib/Target
目录可以给出 LLVM 可以定位的架构列表。
命令行:您可以直接使用LLVM工具。例如,如果您有
clang
(LLVM 的 C 语言前端),您可以运行:
clang --print-targets
这应该提供一个架构列表
clang
/LLVM 可以编译。
LLVM 邮件列表和论坛:如果您在官方文档或浏览源代码中找不到答案,LLVM 社区庞大且非常活跃。在 LLVM 邮件列表或适当的论坛上提问可能是获得明确答案的好方法。
截至我上次更新,我不知道有为 VR4300 量身定制的 LLVM 特定分支或项目。 N64 开发社区很活跃,但考虑到 GCC 编译器的丰富历史和对 MIPS 架构的支持,他们经常利用现有工具。
但是,如果您希望 VR4300 获得 LLVM 支持,可以采取以下几种方法:
搜索 GitHub 和其他存储库:新项目会定期弹出,并且可能有一个新的或不起眼的项目正在致力于此。
启动您自己的分支:如果您雄心勃勃并且对 VR4300 和 LLVM 内部结构有深入的了解(或愿意深入了解),您可以启动您自己的 LLVM 分支并添加支持。
扩展现有后端:可以扩展 LLVM 的现有 MIPS 后端以添加对 VR4300 特定功能的支持,而不是从头开始。
请记住,向 LLVM 添加新目标并非易事,需要深入了解相关架构和 LLVM 的内部结构。这是一项艰巨的任务,但如果您有奉献精神并拥有合适的资源,这当然是可行的。