是否想知道LLVM是否支持16位等字节(不只是8位)? 是否有可能将语言针对LLVM并支持自定义16位FPGA-CPU的这一概念?
据我了解,Clang不支持Clang,但是GCC可以支持LLVM IR吗?
答案 0 :(得分:1)
在LLVM中,没有字节,整数等特定概念。它支持的只是具有任意位宽(iN)的整数。
1 <= N <= (2^23)-1
https://llvm.org/docs/LangRef.html#integer-type
假设在某种语言中,字节= 16位,语言前端应确保它生成i16
而不是i8
。 LLVM IR旨在适应多种不同的语言,这就是这种任意整数位宽度的原因。
是否有可能针对LLVM设计一种语言,并为定制的16位FPGA-CPU支持该概念?
是的,我将术语“ 16位FPGA-CPU”理解为16位软处理器。 LLVM本身支持具有各种位宽的处理器。据我了解,它是否为软处理器也没关系。
在顶部的LLVM IR中,我们找到了称为数据布局的内容。下面的一个是X86_64数据布局。 n8:16:32:64
表示处理器具有对64位,32位,16位和8位处理的本机支持,这意味着它是具有向后兼容性的64位处理器。
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
有关该字段其余部分的信息可在此处找到。 https://llvm.org/docs/LangRef.html#langref-datalayout