搜索

pdf文档 1.2.1 Go on Loong64

1.31 MB 27 页 0 下载 2 浏览 0 评论 0 收藏
所属分类: 后端开发 / Go
语言 格式 评分
中文(简体)
.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 页请下载阅读 -
文档评分
请文明评论,理性发言.