1. 汇编角度看go
2. 《plan9 汇编入门,带你打通应用和底层》讲义
3. 《plan9 汇编入门,带你打通应用和底层》视频地址【这B站里面有很多Go夜读活动视频可以学习】
4. 曹大go源码阅读
5. 曹大源码阅读【汇编篇1】
---------------------【汇编篇2】
6. 曹大博客
7. 字节开源性能强悍的工具库,里面用了不少汇编

go tool compile -S生成的汇编代码中,常见的寄存器解释如下:

  • PC:程序计数器,指下一步要执行的程序,伪寄存器PC和硬件寄存器PC作用差不多。
  • SP:指向当前栈帧的栈顶。但是生成的汇编代码中都是硬件寄存器不是伪寄存器。
  • BP:指向当前栈帧的栈底,函数栈的起始位置(Go编译器会将函数栈空间自动加8,用于存储BP寄存器,跳过这8字节后才是函数栈上局部变量的内存)。
  • SB:保存的值就是进程在内存中代码区的起始地址,它主要用来定位全局符号。go汇编中的函数定义、函数调用、全局变量定义以及对其引用会用到这个SB虚拟寄存器,比如runtime.growslice(SB) 函数是全局的,os.Stdout(SB) 常量是全局的。
  • FP:主要用来引用函数参数。go语言规定函数调用时参数都必须放在栈上,比如被调用函数使用 first_arg+0(FP) 来引用调用者传递进来的第一个参数,用second_arg+8(FP)来引用第二个参数 ,以此类推,这里的first_arg和second_arg仅仅是一个帮助我们阅读源代码的符号,对编译器来说无实际意义,+0和+8表示相对于FP寄存器的偏移量。

Go汇编入门资料【强!!!】相关推荐

  1. Golang 汇编入门知识总结

    作者:ivansli,腾讯 IEG 运营开发工程师 在深入学习 Golang 的 runtime 和标准库实现的时候发现,如果对 Golang 汇编没有一定了解的话,很难深入了解其底层实现机制.在这里 ...

  2. 循环神经网络(RNN)和LSTM初学者指南 | 入门资料

    原作 Skymind  乾明 编译  量子位 出品 | 公众号 QbitAI 最近,有一篇入门文章引发了不少关注.文章中详细介绍了循环神经网络(RNN),及其变体长短期记忆(LSTM)背后的原理. 具 ...

  3. Windows X64汇编入门

    Windows X64汇编入门(1) tankaiha 最近断断续续接触了些64位汇编的知识,这里小结一下,一是阶段学习的回顾,二是希望对64位汇编新手有所帮助.我也是刚接触这方面知识,文中肯定有错误 ...

  4. 【优化系列】MIPS架构汇编优化资料

    DATE: 2021.8.3 文章目录 前言 1.MIPS介绍 2.MIPS汇编入门基础 3.MIPS汇编优化手册 3.1.中文手册 3.2.英文手册 3.3.Loongson 3A 优化 前言 在学 ...

  5. go 汇编入门 如何学习Golang?万字详文教你Go语言入门

    以下内容转载自 https://www.toutiao.com/i6882641627349778955/ 原创腾讯技术工程2020-10-12 18:08:00 作者:ivansli,腾讯开发工程师 ...

  6. 一名数据挖掘工程师给新人整理的入门资料

    数据挖掘 四年前我一次听说数据挖掘这个词,三年前我学习了数据挖掘理论知识,两年前我做了几个与数据挖掘有关的项目,一年前我成为一名数据挖掘工程师,今天我把数据挖掘入门资料整理了一下,希望能够对新人有帮助 ...

  7. 少走弯路:强烈推荐的TensorFlow快速入门资料(可下载)

    (图片付费下载自视觉中国) 作者 | 黄海广 来源 | 机器学习初学者(ID: ai-start-com) 知识更新非常快,需要一直学习才能跟上时代进步,举个例子:吴恩达老师在深度学习课上讲的Tens ...

  8. mapreduce程序输出评分8.6分以上的书名和评分_如何选编程入门资料?光评分高怎么够|文末赠书...

    说到编程入门,很多人第一想到的肯定是Python. 那么,编程零基础应当如何开始学 Python ,才不会入门即放弃?一开始的学习资料的选择尤为重要.那么,如何筛选适合自己的入门资料?这里和大家谈谈我 ...

  9. 汇编 编程实现从键盘输入三位以内的十进制负数_macOS上的汇编入门(二)——数学基础...

    在正式介绍汇编语言之前,我会先用几篇文章讲一些数学基础和硬件基础.如果读者已经具备了一定的知识基础,可以直接跳过这些文章去汇编语言部分. 二进制,八进制与十六进制 在计算机底层的软件层面,我们通常采用 ...

最新文章

  1. 白天鹅黑天鹅灰天鹅?手把手教你用卷积神经网络搞定识别
  2. Java的多线程问题追根溯源。
  3. NV21数据 镜像 旋转
  4. Android短信拦截
  5. bug death march
  6. shell脚本实现无密码交互的SSH自动登陆
  7. php的old函数,laravel单元测试之phpUnit中old()函数报错解决
  8. apache.camel_Apache Camel 3.1 – XML路由的快速加载
  9. malloc,calloc,realloc
  10. html:(6):body标签和p标签
  11. js导出的xlsx无法打开_js文件操作之——导出Excel (js-xlsx)
  12. Android是什么 之三手机之硬件形态
  13. LeetCOde-394:字符串解码
  14. 当Tomcat配置安装都成功端口号也没问题时网页输入http://localhost:8080/打不开如何解决
  15. VS2017(64位) Win32_Interop.lib ws2_32.lib 函数重定义
  16. linux 扫描开放的端口命令,如何在 Linux 中检查(扫描)开放端口
  17. WS小世界网络的建立及基本特征的求法
  18. Netbox 开源 IPAM 管理工具搭建详细流程
  19. Sql Server 创建唯一聚集索引典型实现
  20. 【实用】关于Ubuntu下的对拍程序

热门文章

  1. 事件查看器常见ID代码解释
  2. lr_convert_string_encoding: 对中文进行UTF-8转码
  3. c语言编写的鼠标键盘录制程序,用C语言写的鼠标驱动程序
  4. Airtest笔记(三)
  5. 网站整合Ucenter详细流程
  6. word文档合并和查找替换使用通配符
  7. 儿童抽动症有哪些表现?
  8. 《乔布斯传》读书笔记
  9. 长乐外海风电场创新应用,推动全球智慧海上风电发展
  10. QT入门 (B站传智教程)