探究 gcc 浮点数精度转换所使用的指令 —— use_vector_fp_converts 优化
在学习浮点数精度转换指令 时,CS:APP 里提到 gcc 并不使用vcvtss2sd
/vcvtsd2ss
,而是使用vunpcklps
&vcvtps2pd
/vmovddup
&vcvtpd2psx
,但是我使用 gcc 12.2.0 编译得到的结果就是vcvtss2sd
/vcvtsd2ss
。对此,CS:APP 没有深究:
It is unclear why GCC generates this code. There is neither benefit nor need to have the value duplicated within the XMM register.
但是 CS:APP 选择放弃反而会激发读者的斗志啊(
虽然但是,我确实没想到这玩意会让我断断续续搞了三天,ddl 又要寄了 🌚
CS:APP 第七章学习笔记
CS:APP 第七章“Linking” 的学习笔记。
这章的主要内容为程序的链接。学习链接有助于:理解链接报错,避免链接相关的 bug,理解变量(函数)的作用域,理解程序运行过程中与链接相关的步骤,了解如何使用共享库(动态链接库)。
CS:APP 第四章学习笔记
CS:APP 第四章“Processor Architecture” 的学习笔记。
这章的主要内容为一个简化的指令集 Y86-64 的设计以及 Y86-64 处理器的实现(顺序实现和 pipeline 实现)。
CS:APP 第三章学习笔记
CS:APP 第三章“Machine-Level Representation of Programs” 的学习笔记。
这章的主要内容为汇编(machine-level programming)。
CS:APP 第二章学习笔记
CS:APP 第二章“Representing and Manipulating Information” 的学习笔记。
这章的主要内容为 byte、整数和浮点数的存储及计算。
初学 Rust
早就想学 Rust 了,但一直咕着。这次小学期的程设训练开了 Rust 课堂,就毫不犹豫地选了,也以此为契机学了 Rust。
这篇就是简单记录一下大体上的学习过程,如果有什么心得体会、经验分享之类应该会开新的文章。
顺便也算是程设训练的游记了(“游记”这个词来源于 OI 时期的习惯)。
busuanzi 访问量统计与 live2d 插件同时使用导致 busuanzi 不显示的根本原因以及解决方法
昨天在一位网友的 Hexo 博客遇到了很诡异的 busuanzi 访问量统计不显示问题,经过一番研究发现是 busuanzi 代码的一处问题和 live2d 插件的一处问题凑在一起导致的。
今天在写博客之前先搜了一下“busuanzi live2d”,发现搜出来一堆结果,我还以为我白研究了..结果点进去一看,第一页结果里没有一个指出了问题的根本原因,而且修复方法基本上都是删 feature 或者换组件,但实际上只要知道问题的根本原因就可以在不妨碍正常功能运作的前提下进行修复。所以昨天晚上没白忙活,我这篇博客还是要写的。