Go语言高级编程
  • Go语言高级编程(Advanced Go Programming)
  • 第1章 语言基础
    • 1.1 Go语言创世纪
    • 1.2 Hello, World 的革命
    • 1.3 数组、字符串和切片
    • 1.4 函数、方法和接口
    • 1.5 面向并发的内存模型
    • 1.6 常见的并发模式
    • 1.7 错误和异常
    • 1.8 补充说明
  • 第2章 CGO编程
    • 2.1 快速入门
    • 2.2 CGO基础
    • 2.3 类型转换
    • 2.4 函数调用
    • 2.5 内部机制
    • 2.6 实战: 封装qsort
    • 2.7 CGO内存模型
    • 2.8 C++类包装
    • 2.9 静态库和动态库
    • 2.10 编译和链接参数
    • 2.11 补充说明
  • 第3章 汇编语言
    • 3.1 快速入门
    • 3.2 计算机结构
    • 3.3 常量和全局变量
    • 3.4 函数
    • 3.5 控制流
    • 3.6 再论函数
    • 3.7 汇编语言的威力
    • 3.8 例子:Goroutine ID
    • 3.9 Delve调试器
    • 3.10 补充说明
  • 第4章 RPC和Protobuf
    • 4.1 RPC入门
    • 4.2 Protobuf
    • 4.3 玩转RPC
    • 4.4 gRPC入门
    • 4.5 gRPC进阶
    • 4.6 gRPC和Protobuf扩展
    • 4.7 pbgo: 基于Protobuf的框架
    • 4.8 grpcurl工具
    • 4.9 补充说明
  • 第5章 Go和Web
    • 5.1 Web开发简介
    • 5.2 请求路由
    • 5.3 中间件
    • 5.4 请求校验
    • 5.5 和数据库打交道
    • 5.6 服务流量限制
    • 5.7 大型Web项目分层
    • 5.8 接口和表驱动开发
    • 5.9 灰度发布和A/B测试
    • 5.10 补充说明
  • 第6章 分布式系统
    • 6.1 分布式 id 生成器
    • 6.2 分布式锁
    • 6.3 延时任务系统
    • 6.4 分布式搜索引擎
    • 6.5 负载均衡
    • 6.6 分布式配置管理
    • 6.7 分布式爬虫
    • 6.8 补充说明
  • 附录
    • 附录A: Go语言常见坑
    • 附录B: 有趣的代码片段
    • 附录C: 作者简介
Powered by GitBook
On this page

Was this helpful?

  1. 第3章 汇编语言

3.10 补充说明

如果是纯粹学习汇编语言,则可以从《深入理解程序设计:使用Linux汇编语言》开始,该书讲述了如何以C语言的思维变现汇编程序。如果是学习X86汇编,则可以从《汇编语言:基于x86处理器》一开始,然后再结合《现代x86汇编语言程序设计》学习AVX等高级汇编指令的使用。

Go汇编语言的官方文档非常匮乏。其中“A Quick Guide to Go's Assembler”是唯一的一篇系统讲述Go汇编语言的官方文章,该文章中又引入了另外两篇Plan9的文档:A Manual for the Plan 9 assembler 和 Plan 9 C Compilers。Plan9的两篇文档分别讲述了汇编语言以及和汇编有关联的C语言编译器的细节。看过这几篇文档之后会对Go汇编语言有了一些模糊的概念,剩下的就是在实战中通过代码学习了。

Go语言的编译器和汇编器都带了一个-S参数,可以查看生成的最终目标代码。通过对比目标代码和原始的Go语言或Go汇编语言代码的差异可以加深对底层实现的理解。同时Go语言连接器的实现代码也包含了很多相关的信息。Go汇编语言是依托Go语言的语言,因此理解Go语言的工作原理是也是必要的。比较重要的部分是Go语言runtime和reflect包的实现原理。如果读者了解CGO技术,那么对Go汇编语言的学习也是一个巨大的帮助。最后是要了解syscall包是如何实现系统调用的。

得益于Go语言的设计,Go汇编语言的优势也非常明显:跨操作系统、不同CPU之间的用法也非常相似、支持C语言预处理器、支持模块。同时Go汇编语言也存在很多不足:它不是一个独立的语言,底层需要依赖Go语言甚至操作系统;很多高级特性很难通过手工汇编完成。虽然Go语言官方尽量保持Go汇编语言简单,但是汇编语言是一个比较大的话题,大到足以写一本Go汇编语言的教程。本章的目的是让大家对Go汇编语言简单入门,在看到底层汇编代码的时候不会一头雾水,在某些遇到性能受限制的场合能够通过Go汇编突破限制。

Previous3.9 Delve调试器Next第4章 RPC和Protobuf

Last updated 5 years ago

Was this helpful?