haskell LLVM对GHC的调用约定

yrdbyhpb  于 2023-05-29  发布在  其他
关注(0)|答案(1)|浏览(139)

以下是LLVM的doc“langref”中的文本:
“cc 10”- GHC公约
此调用约定是专门为格拉斯哥Haskell编译器(GHC)而实现的。它传递寄存器中的所有内容,通过禁用被调用方保存寄存器来实现这一点。此调用约定不应轻易使用,而应仅用于特定情况,例如实现函数式编程语言时经常使用的寄存器固定性能技术的替代方案。目前只有X86支持此约定,它有以下限制:

  • X86-32上最多支持4位类型参数。不支持浮点类型。
  • X86-64最多支持10位类型参数和6个浮点参数

问:
1.“寄存器固定”意味着或指的是“传递寄存器中的所有内容”。
1.什么是“4位类型参数”?我查了情报局的手册,但什么都没找到。这是英特尔CPU的一个特点吗?

u0njafvf

u0njafvf1#

1.“寄存器固定”似乎是指将特定的东西分配给特定的硬件寄存器;请参阅这些GHC LLVM后端注解和linked discussion中的“寄存器固定”部分。

  1. Dirk是对的--你可以在LLVM tblgen code which defines these conventions中清楚地看到它(寻找CC_X86_64_GHCCC_X86_32_GHC)。

相关问题