| 语言 | 格式 | 评分 |
|---|---|---|
中文(简体) | .pdf | 3 |
| 摘要 | ||
文档围绕Go语言在Loong64架构上的适配与进展展开。首先介绍了Go asm语法中存在的历史遗留问题,如MOVV和ADDVU指令的语义模糊,但指出这些属于可重构的实现细节。随后概述了当前版本现状:截至2023年6月,Go 1.20.5为最新稳定版,Go 1.21已冻结,相关依赖如x/sys、x/net已打标签,Linux 6.3、binutils 2.40等环境已就绪。适配linux/loong64的关键步骤包括:确保项目可在Go 1.19+构建,关键依赖版本足够(如x/sys、x/net需有标签版本,bbolt需≥1.3.7,gopsutil需≥3.23.2),并针对Pure Go、cgo、其他构建系统分别处理。在Go 1.21周期中,新增了更多构建模式(pie、c-archive、c-shared),实现了原生位旋转、Add64和Sub64的内联化、branchelim pass启用等优化,性能提升约1%~2.33%。此外,LoongArch ELF psABI v2得到支持,编译器中通过MASKEQZ优化移位操作等。可靠性方面修复了崩溃和溢出问题。文档还提及了跨公司合作历程:2022年5月创建@go1ang/loong64团队,同月port合并。 | ||
| AI总结 | ||
该文档是关于Go语言在Loong64(龙芯架构)上的适配与进展总结。核心内容分为三部分:
1. **历史与现状**:最早的Loong64移植代码带有明显的MIPS64x痕迹,存在一些遗留问题,如Go汇编语法中“MOVV”和“ADDVU”指令的命名容易引起误解。目前(2023年6月)Go 1.20.5是稳定版,Go 1.21已冻结,相关依赖如x/sys、x/net等已有对应版本。
2. **适配指南**:为linux/loong64适配项目需要三步:确保项目可在Go 1.19+构建;确保关键依赖(如x/sys、x/net、bbolt、gopsutil)版本足够;针对剩余情况按常识处理,包括纯Go代码的条件编译(字节序、对齐等)、cgo的C/C++移植问题,以及构建系统打包问题。
3. **近期工作与规划**:
- **Go 1.21周期**:新增了更多构建模式(pie、c-archive、c-shared),实现了LoongArch ELF psABI v2,并通过优化(如MASKEQZ移位优化、避免多余计算)带来了约1%~2.33%的性能提升。同时修复了崩溃和整数溢出等可靠性问题。
- **社区贡献**:Wayne Zuo贡献了原生位旋转、Add64和Sub64的内联优化,以及启用branchelim优化。
- **未来规划**:计划重构遗留的代码风格问题,并继续推进后续版本(Go 1.22及以后)的优化工作。 | ||
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余
15 页请下载阅读 -
文档评分














1.2.1 Go on Loong64
Spring Boot 1.2.1.RELEASE Reference Documentation
Spring Framework 1.2.1 Changelog