loongson-community / discussions

Cross-community issue tracker & discussions / 跨社区工单追踪 & 讨论场所
7 stars 0 forks source link

关于LoongArch架构中宏定义使用的原则 #50

Open wangchenguang123 opened 3 months ago

wangchenguang123 commented 3 months ago

想请问以下各位老师,LoongArch的预定义宏的使用原则: (1)什么时候使用loongarch/loongarch64/loongarch_lp64 期待各位老师的解答,辛苦了。

xen0n commented 3 months ago

更多详见龙芯官方文档 https://github.com/loongson/la-softdev-convention

wangchenguang123 commented 3 months ago
  • __loongarch__: 当前在为 LoongArch 编译

    • __loongarch_lp64: 当前使用 LP64 数据模型,这意味着:

      • GPR 至少有 64 位宽,使用其低 64 位(或完整 64 位)传参
      • ABI 是 LP64S/LP64F/LP64D 等 LP64 数据模型的 ABI
    • __loongarch64 不应再被使用,它是从 __mips64 直接变为 __loongarch64 的旧世界产物。本义是“我在为支持 64 位的处理器编译”,但请注意:处理器支持 64 位操作,并不意味着你就可以利用这些 64 位操作。请按需使用其他符号。

更多详见龙芯官方文档 https://github.com/loongson/la-softdev-convention

感谢老师的解答,我在认真学习一下

xry111 commented 3 months ago

如果确实需要判断是否处理器支持 64 位操作,建议用 __loongarch_grlen >= 64,这样读的人一看就知道是在判断处理器而不是 ABI。

xen0n commented 3 months ago

Triage: 此问题是常见问题,值得一篇专门的 AWLY 学习资料。待写