当前位置: 首页 > news >正文

C语言深度剖析

一、关键字

1.1 最快的关键字-register

register 这个关键字请求编译器尽可能将变量存在CPU内部寄存器中,而不是通过内存寻址以提高效率。

注意是:尽可能、而不是绝对

1.1.1 皇帝身边的小太监-寄存器

不知道什么是寄存器,那见过太监没有其实寄存器就是相当于。一个cpu的中转站并没有其他功能。

好,那我们再连线一下我们的cpu cpu不就是皇帝同志吗?大神就相当于我们的内存数据从他这拿出来,那小太监就是我们的寄存器了。数据从内存拿出来要先放到寄存器,然后cpu再从寄存器里读取数据处理,处理完后同样把数据通过寄存器存放到内存里。Cpu不直接和内存打交道,这里要说明的一点是小太监是主动从大臣手里接过奏章,然后主动地交给皇帝同志。但寄存器没有那么自觉,他从不主动干什么事,一个皇帝可能有好几个小太监,那么一个cpu就也有可能有很多起人气。不同的型号的cpu拥有的寄存器的数量不一样。

为啥要这么麻烦啊?原因就是速度吸尘器其实是一块很小的内存空间,只不过其存储速度要比内存快的多。所谓近水楼台先得月嘛,它距离cpu很近,cpu一伸手就拿到数据了,比在那么大的一块内存里去寻找某个地址上的数据是不是快的多了,那有人要问,既然它速度那么快,那我们的内存硬盘都换成计算器得了呗。我要的要说的是:你可真有钱。

总结:寄存器作为CPU的助手,访问速度要比内存快,但是寄存器成本比内存高。

1.1.2 使用register修饰符注意点

虽然计算器的速度非常快,但是使用 register修饰符也有限制的register变量必须能被cpu寄存器所接受的类型意味着register变量必须是一个单个的词。并且其长度应该小于等于整形的长度,而且register变量可能不存放在内存中,所以不能使用取地址符"&"来获取register变量的历史。<

http://www.lryc.cn/news/616165.html

相关文章:

  • Docker 详细介绍及使用方法
  • 【东枫科技】 FR2 Massive MIMO 原型验证与开发平台,8*8通道
  • DBSACN算法的一些应用
  • 力扣-20.有效的括号
  • Design Compiler:布图规划探索(ICC II)
  • 【FPGA】初识FPGA
  • Jotai:React轻量级状态管理新选择
  • 密码学的数学基础2-Paillier为什么产生密钥对比RSA慢
  • 重学React(四):状态管理二
  • 机器学习第八课之K-means聚类算法
  • 编程基础之多维数组——计算鞍点
  • 【Docker实战】将Django应用容器化的完整指南
  • 【代码随想录day 15】 力扣 257. 二叉树的所有路径
  • [FOC电机控制] 电压频谱图
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘ray’问题
  • Redis一站式指南一:从MySQL事务到Redis持久化及事务实现
  • 【每天一个知识点】深度领域对抗神经网络
  • MACBOOK M1安装达梦8数据库
  • nginx-主配置文件
  • 异步问题的概念和消除问题技巧
  • 【Tomcat】企业级web应用服务器
  • ATF(TF-A)安全通告 TFV-12(CVE-2024-5660)
  • nestjs官网推荐typeorm而不是prisma的原因
  • 实现MATLAB2024b和M文件关联(防止运行多个MATLAB)
  • 【0基础3ds Max】主工具栏介绍(下)
  • 金融机构在元宇宙中的业务开展与创新路径
  • ATF(TF-A)安全通告 TFV-13(CVE-2024-7881)
  • vue3项目中在一个组件中点击了该组件中的一个按钮,那么如何去触发另一个组件中的事件?
  • RAG (Retrieval-Augmented Generation) 原理详解与实例
  • Stream流应用