想知道LLVM是否支持大小为16bit的字节等(不仅仅是8bit)?是否有可能制作一种针对LLVM的语言并支持自定义16位FPGA-CPU的这一概念?
根据我的理解,Clang不支持这个,而GCC可以BUT做LLVM IR吗?
在LLVM中,没有特定的字节,int等概念。它支持的是具有任意位宽(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