【C语言指针详解-CSAPP数据段解析】1024程序员节 | 汇编语言机械级编程|用代码,改变世界#

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
云解析DNS,个人版 1个月
简介: 【C语言指针详解-CSAPP数据段解析】1024程序员节 | 汇编语言机械级编程|用代码,改变世界#

🍃课堂讲解


内存中的数据

1668322006412.jpg

1668322018749.jpg

数组就是个地址然后有头尾


val【】

当我们val+1 在内存里就是 x+4

🤔️我们是为了让这个指针指向下一个值的地址

编译器知道这个变量是什么变量类型!


只有*(Val+1) 才是 5


如果下标变成负值呢?也可以用


实际举例


注意⚠️:每次都要给你要加入的数字一个确切的名字,不然就是magic number,让人困惑是不是只有他可以

都要初始化变量

1668322039389.jpg


注意这个数组定义很有意思:

相当于int cmu【5】={1,2,3,4,5}


1668322059258.jpg


看图 汇编底层实现数组:

movl(rdi,rsi,4), eax

这就是取数:z【digital】


循环数组


1668322079000.jpg

注意:c和汇编特别相似:比如+=这个符号

goto


指针和数组区别:


指针声明以后不分配空间。而数组则会分配空间

注意⚠️:如果我

声明a[3];这是一个指向一个三个int空间的指针。

但是如果我*a【3】这就有空指针的风险

因为这是个指针,不是数组,没有初始化。

这样很危险。

1668322102500.jpg

1668322113770.jpg


为什么a【1】【j】比a【i】【1】快


1668322130262.jpg


我们看汇编代码:他们首先是走一大步走到a【i】上–这一步有时候用乘法,有时候就是位运算,但是比起加法肯定是慢的,然后再通过movl(rdi,rdx,4),eax来走一小步一小步的j

所以必然 便利的时候一直走小步就可以了,更加方便,如果每次都要重新迈大步那就慢了。


节省空间的定义方法—防止内存对齐的浪费–把最大的放最前面


1668322152260.jpg


浮点数的实现,及其计算


之前背景:

被集成到专门的芯片上面搞浮点数-------------显卡?

1668322173922.jpg

1668322184480.jpg

SSE3示例:

每个16字节寄存器


用以实现浮点数运算—配合ieee754非常先进的方式!!!

1668322229783.jpg


注意:

addss=add single precision scalar

用这个SIMD指令可以做到快速计算浮点数---------------------------------------------------显卡


1668322251478.jpg


浮点数运算的代码-示例


1668322278521.jpg


浮点数汇编:


把数字放在xmm1寄存器非常与众不同


现在用ymm


浮点 整型代码计算混在一起 示例:

1668322309960.jpg

相关文章
|
3天前
|
存储 数据管理 数据库
CRUD操作实战:从理论到代码实现的全面解析
【7月更文挑战第4天】在软件开发领域,CRUD代表了数据管理的四个基本操作:创建(Create)、读取(Read)、更新(Update)和删除(Delete)。这四个操作构成了大多数应用程序数据交互的核心。本文将深入讲解CRUD概念,并通过一个简单的代码示例,展示如何在实际项目中实现这些操作。我们将使用Python语言结合SQLite数据库来演示,因为它们的轻量级特性和易用性非常适合教学目的。
32 2
|
3天前
|
文字识别 Java Python
文本,文识08图片保存()上,最方便在于整体生成代码,serivce及实体类,base64编码保存图片文件,调用flask实现内部ocr接口,通过paddleocr识别,解析结果,base64转图片
文本,文识08图片保存()上,最方便在于整体生成代码,serivce及实体类,base64编码保存图片文件,调用flask实现内部ocr接口,通过paddleocr识别,解析结果,base64转图片
|
7天前
|
搜索推荐 程序员 C语言
指针赋值与引用传递:C语言的基础知识与实践技巧
指针赋值与引用传递:C语言的基础知识与实践技巧
|
3天前
|
存储 C语言
C语言中static关键字的作用与用法解析
C语言中static关键字的作用与用法解析
|
5天前
|
存储 C语言
C语言中static关键字的作用与用法解析
C语言中static关键字的作用与用法解析
|
5天前
|
搜索推荐 程序员 C语言
指针赋值与引用传递:C语言的基础知识与实践技巧
指针赋值与引用传递:C语言的基础知识与实践技巧
|
9天前
|
Java 程序员 Linux
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
14 0
|
9天前
|
C语言
C语言实现猜数字游戏:代码详解与函数解析
C语言实现猜数字游戏:代码详解与函数解析
11 0
|
10天前
|
C语言
C语言中的函数指针、指针函数与函数回调
C语言中的函数指针、指针函数与函数回调
7 0

推荐镜像

更多