在阅读Golang源码时,经常看到下面一段汇编代码,如下:

   0x00000000004310c8 <+24>:    xorps  %xmm0,%xmm00x00000000004310cb <+27>:    movups %xmm0,0x8(%rsp)0x00000000004310d0 <+32>:    movups %xmm0,0x18(%rsp)0x00000000004310d5 <+37>:    movups %xmm0,0x28(%rsp)

xmm0是128位寄存器,一般用于浮点数运算,但程序中没有看到任何浮点数变量,那这段代码是什么意思?

其实很简单,就是将内存置0。如上面这段代码,是将0x8(%rsp)0x38(%rsp)之间的内存置0。为什么要这样置0?因为用的指令更少,xmm0是128位寄存器,每个指令可以清空16byte大小的内存,而如果用MOVQ AX, 0x8指令,一次只能清空8byte,需要花两倍指令才能达到相同目的。

xorps异或指令,异或同一个变量结果一定为0,通过xorps %xmm0,%xmm0就是将xmm0寄存器置0。

Golang源码中xmm0寄存器相关推荐

  1. 【我的架构师之路】- golang源码分析之协程调度器底层实现( G、M、P)

    本人的源码是基于go 1.9.7 版本的哦! 紧接着之前写的 [我的区块链之路]- golang源码分析之select的底层实现 和 [我的区块链之路]- golang源码分析之channel的底层实 ...

  2. golang源码分析-调度概述

    golang源码分析-调度过程概述 本文主要概述一下golang的调度器的大概工作的流程,众所周知golang是基于用户态的协程的调度来完成多任务的执行.在Linux操作系统中,以往的多线程执行都是通 ...

  3. golang源码分析-启动过程概述

    golang源码分析-启动过程概述 golang语言作为根据CSP模型实现的一种强类型的语言,本文主要就是通过简单的实例来分析一下golang语言的启动流程,为深入了解与学习做铺垫. golang代码 ...

  4. go linux 源码编译环境,修改并编译golang源码

    Go 语言诞生5周年! 友情提示:本文使用Markdown编写,黑色背景文字可能需要横向拖动才能看清全文 最近为了做Hyperledger Fabric国密改造,涉及到了golang源码的改动.特将操 ...

  5. c++ map 获取key列表_好未来Golang源码系列一:Map实现原理分析

    分享老师:学而思网校 郭雨田 一.map的结构与设计原理 golang中map是一个kv对集合.底层使用hash table,用链表来解决冲突 ,出现冲突时,不是每一个key都申请一个结构通过链表串起 ...

  6. 第一次作业:对于Linux2.6.0源码中进程模型的分析

    摘要: 作为第一次写博客,可能在排版,页面布局等方面会有大大小小的失误和不足,希望阅读者可以指出,笔者会继续学习,锻炼自己的博客水平:作为第一次分析Linux操作系统,基于进程模型的理解,在不是很熟悉 ...

  7. Golang源码探索----GC的实现原理(6)

    推荐文章: Golang源码探索----GC的实现原理(1) Golang源码探索----GC的实现原理(2) Golang源码探索----GC的实现原理(3) Golang源码探索----GC的实现 ...

  8. Android 编译过程介绍,Android.mk 和 Android.bp 分析, 在源码中编译 AndroidStudio 构建的 App

    目录 一.Android 编译 1. 编译流程 2. Soong 介绍 3. build.sh 二.Android.mk 解析 三.Android.bp 解析 1. 模块类型 2. 模块属性 四.An ...

  9. Golang源码探究 —— chan

    目录 1.chan数据结构的定义 2.创建chan 3.发送数据 c <- 3.1 直接发送 3.2 放入缓冲区 3.3 休眠等待 3.4 chan发送源码 4.接收数据 <- c 4.1 ...

最新文章

  1. 谷歌大脑新算法,不折腾TPU就能加快AI训练速度
  2. 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质 | 序列实偶 傅里叶变换 实偶 | 序列实奇 傅里叶变换 虚奇 | 证明 “ 序列实奇 傅里叶变换 虚奇 “ )
  3. 游戏中用到的设计模式
  4. STC12单片机串口U盘测试程序源码
  5. 全部换新-微软复兴.NET,C#10 .NET6 VS2022各个强势!
  6. 那些中国式家庭的小烦恼,我看用AI来解决就“都挺好” | 技术头条
  7. Regsvr32.exe 的用法
  8. js中substr与substring的区别
  9. python可以通过引用来对象吗_Python的可调用对象
  10. Mysql 常用函数集
  11. Python数据可视化,Pyecharts库,国家卫健委疫情风险等级数据可视化
  12. 腾讯程序员不寻常的三年
  13. c语言 abs 不好用,c语言中 abs 和 fabs 不同吗?
  14. Bada学习-SDK的安装
  15. 离线安装docker
  16. 首款搭载国产龙芯 CPU 的域名服务器发布
  17. Android系统教程PPT,Android教程之架构详解.ppt
  18. 多测师肖sir_高级金牌讲师__python之常见if语句
  19. Android:Environment.getExternalStorageDirectory 废弃
  20. win10 安装下载jupyter lab

热门文章

  1. 品优购商城项目常见BUG解析
  2. 关于fancybox打开动态加载的图片
  3. “猪”事大吉 | 为什么猪是最后一个生肖?
  4. 垃圾分类里有哪些淘金机会?​
  5. [Kerberos] Kerberos教程(一)
  6. html 源码_HTML实例之搜索栏(附源码)
  7. Android Monkey测试入门:安装sdk、studio、模拟器,并分析monkey日志
  8. IT业比较好的几个社区论坛
  9. 我的物联网项目初建团队
  10. 传感器--电阻应变片传感器