代码之家  ›  专栏  ›  技术社区  ›  zezba9000

llvm-ir是否支持(字节=16位)?

  •  0
  • zezba9000  · 技术社区  · 5 年前

    想知道llvm是否支持16bit等大小的字节(不仅仅是8bit)? 是否可以为定制的16位fpga cpu设计一种针对llvm并支持这一概念的语言?

    据我所知,clang不支持这一点,而gcc可以,但llvm-ir呢?

    0 回复  |  直到 5 年前
        1
  •  1
  •   DTharun    5 年前

    在llvm中没有特定的字节、int等概念,它只支持具有任意位宽(in)的整数。

    1 <= N <= (2^23)-1

    https://llvm.org/docs/LangRef.html#integer-type

    假设,在某些语言中,字节=16位,语言前端应该确保它生成 i16 而不是 i8 . llvm-ir设计用于容纳许多不同的语言,这就是产生这种任意整数位宽度的原因。

    是否可以为定制的16位fpga cpu设计一种针对llvm并支持这一概念的语言?

    是的,我把“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