跳到主要内容

每周一龙:第 45 期

· 阅读需 6 分钟
WANG Xuerui
🐲龙门客栈打杂的

每周一都为大家报道 LoongArch 社区最前线的第一手新鲜资讯! 上周的进展主要有工具链和官方文档上新。 详情点进来看!

本期周报的实际发稿时间是周二凌晨,因为笔者的工作站周末坏掉了,搭建临时环境、处理工作等事务费了很多时间。 网页上显示的发稿时间仍然是 4 月 22 日: 这是 Docusaurus 早期为了修复一个时区 bug 而导致的又一个时区 bug。

如无特别说明,文中提及的日期、时间都为北京时间(UTC+8)。

先「马」再看

本栏目的内容具有一定延续性,将持续追踪报道 LoongArch 领域的重要或长期项目(坑)。

Linux

4 月 16 日 Miguel Ojeda 发现 linux-next 的 LLVM=1 构建任务失败了,原因又是做重构的人忘了改 LoongArch。David Hildenbrand 修复了问题。

工具链

binutils

Jinyang He 避免了 gas 在非代码段中产生不必要的 ADD/SUB 重定位记录对。

Lulu Cai 对链接共享目标代码(-shared)时使用绝对地址类重定位的错误给出了详细报错。

Lulu Cai 还修复了 BFD 链接器处理 TLS 符号时可能崩溃的问题。

GCC

Yang Yujie 实现了新《工具链约定》所描述的指令集版本写法 -march=la64v1.0-march=la64v1.1

杂闻播报

龙芯官方发布了 Assembly Language Programming Guide for the LoongArch™ Architecture(《LoongArch™ 架构汇编语言编程指南》)一书的首个正式版本 1.0。感谢 Revy(在群聊)与 jiegec(在投稿信箱)投递新闻线索!

小编评论

本书不是 2023 年由人民邮电出版社在中国大陆出版的《汇编语言编程基础 基于 LoongArch》一书的英文版。 在 xen0n 看来,《基础》一书与本书虽然在内容上有相似之处——毕竟硬件是定死的,谁来介绍指令用法都只能这么介绍——但整体叙述上更偏科普。 《基础》一书对读者的要求是「具有计算机的使用经验,具有计算机基础知识,具有一门高级语言(C、Java、Python 等)的基本编程基础知识」;相比之下,本书则「assumes that you are an experienced assembly language developer and that you are familiar with the LoongArch architecture」——「假定您是有经验的汇编语言开发者,并且熟悉 LoongArch 架构」。

根据 xen0n 的简单浏览,本书的英语表达仍有改进空间。虽不至影响非汉语母语者的阅读,一些简单失误(例如词性用错)也总有些扎眼。 考虑到优先以英语编撰此资料的目的显然是向国际社区播撒 LoongArch 而非中式英语的知识, 建议行有余力的同学考虑去 GitHub 帮官方做做校对。

龙芯官方也发布了 Toolchain Conventions of the LoongArch™ Architecture(《LoongArch™ 架构工具链约定》)的 1.1 版本。相比很久之前的 1.0 版本,主要的变化是终于新增了不与具体硬件型号相关,而仅反映架构版本的通用 -march 写法 -march=la64v1.0-march=la64v1.1

小编评论

某种程度上,这是 xen0n 在 2021 年提出的建议终于被实现了……

此外,尽管《龙芯架构参考手册》的封面写着「V1.10」,从龙芯官网下载的此文档文件名也有个 r1p10 的后缀, 但从这一版规范所采用的 -march 写法上看,显然龙芯团队更倾向于将「1.10」理解为与「语义化版本」 1.1.0 等效——10 居然是两个数。

目前开发者群体对《语义化版本》实践的接受程度普遍不错,我们自然也欢迎龙芯拥抱此最佳实践;不过如果能找个机会统一一下《手册》等等材料的封面、文件名等处的写法,那就更好了。

多次见报的老面孔,来自龙芯的工具链维护者 mengqinggang 响应了二月份 xen0n 发布的英雄帖:为 BLAKE3 哈希算法库增加 LoongArch 向量优化。 按照 BLAKE3 仓库中的介绍,这意味着不久后包括但不限于 Bazel、IPFS、LLVM、OpenZFS、Wasmer 等知名项目都可以在 LoongArch 上将这部分计算跑得更快了。

张贴栏

本栏目可供张贴公益性质的各种信息。