文章目录

  • 一. 什么是寄存器?
  • 二. 为什么要存在寄存器?
  • 三. register 修饰变量

一. 什么是寄存器?

我们都知道,CPU主要是负责进行计算的硬件单,但是为了方便运算,一般第一步需要先把数据从内存读取到CPU内,那么也就需要CPU具有一定的数据临时存储能力(CPU并不是当前要计算了,才把特定数据读到CPU里面,那样就太慢了)。

现代CPU内,都有集成一组叫做寄存器和高速缓存(Cache)的硬件,用来做临时数据的保存

二. 为什么要存在寄存器?

寄存器的存在是为了在硬件层面上,提高计算机的运算效率。这样通过预先缓存,CUP就不需要每次都从内存里读取数据了。

三. register 修饰变量

register 只能修饰局部变量,其作用是尽量将所修饰变量,放入CPU寄存区中,从而达到提高效率的目的。

那么什么样的变量,可以采用 register 呢?

  • 首先这个变量必须是局部的(全局会导致CPU寄存器被长时间占用)

  • 被高频被读取且不会写入的(写入就需要写回内存,后续还要读取检测的话,register 的意义在哪呢?)

PS:该关键字,现在已经不会有人在使用了,因为现在的编译器,已经很智能了,能够进行比人更好的代码优化(会自动识别给需要的变量加上 register )。早期编译器需要人为指定 register,来进行手动优化,现在不需要了。

【C++】register 关键字相关推荐

  1. C++对C的加强之register关键字增强

    register关键字增强 前言 register关键字的变化 前言 //register关键字 请求编译器让变量a直接放在寄存器里面,速度快 //在c语言中 register修饰的变量 不能取地址, ...

  2. C语言register关键字——最快的关键字

    C语言register关键字-最快的关键字 (2012-08-24 14:09:24) 转载▼ 标签: 杂谈 分类: C/C    register:这个关键字请求编译器尽可能的将变量存在CPU内部寄 ...

  3. register关键字

    文章目录 1 register关键字 2 C++中的register关键字 1 register关键字 对于register关键字: register关键字只能作用于局部变量,不能作用于全局变量. r ...

  4. register关键字的使用

    前言 本文用简单代码实验介绍register关键字的使用. 上代码 #include <stdio.h>int main(void) {int i;int tmp = 0;for (i=1 ...

  5. C语言register关键字—最快的关键字

    register:这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率.注意是尽可能,不是绝对.你想想,一个CPU 的寄存器也就那么几个或几十个,你要是定义了很 ...

  6. C和指针之auto和内存栈和register关键字

    1.auto 在C代码中每个函数都有其生命周期(也称作用域),在函数生命周期中声明的变量通常叫做局部变量,也叫自动变量.例如: 复制代码代码如下: int chenyu(){ int a = 10; ...

  7. register关键字-1

    #include<iostream>using namespace std;int main(int argc, char*argv[]) /* Rong Tao 2018.03.19 * ...

  8. C++ register 关键字

    register 简介: register 就像是汉语和英语中的形容词(不要问为什么只有两种语言,因为小编只会这两种),在 C++ 中 register 是用来修饰变量的. register 的作用: ...

  9. 详细说明register关键字

    一 register的作用(加上volatile都是让其变成易变的,防止编译器对其进行优化) 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了. ...

最新文章

  1. 如何设置matplotlib中x,y坐标轴的位置?
  2. 加上2T硬盘再装系统遇到问题
  3. 【笔记】Linux就该这么学-第六课第四章
  4. oracle数据库查询表语句,oracle数据库重要的查询语句
  5. 第11课:优化神经网络——梯度优化
  6. 编程语言发展的编年史
  7. android jar导出,Android项目导出jar包的小技巧
  8. 广工android嵌入式系统试卷_教育录播系统的选择
  9. Nginx学习笔记3:Shell脚本检测Nginx服务状态
  10. input里面check 状态检测
  11. Html5 学习系列(二)HTML5新增结构标签
  12. PythonHDF5目录
  13. 酷派5890详细获取ROOT、以及刷机教程
  14. 【软件工程】瀑布模型的价值
  15. Word 之 清除页眉下划线
  16. [每日一氵] BERT下游二分类任务精确率P约为0.5,召回率R约为1的问题
  17. DCI format 5A相关学习
  18. 期货开户手机APP有哪些?
  19. 2017 黑马 C++ 教学视频
  20. 基于stm32单片机有害气体监测检测Proteus仿真(仿真+源码+全套资料)

热门文章

  1. 201903-2二十四点[20201213封笔题目]没写呢
  2. 【经典算法】·二分法
  3. element的table组件,表头合并(合并表头单元格)
  4. texstudio: 无法启动buildview:Xelate: xelatex.exe -synctex=1 -interacion=nonstopmode
  5. 栈内存 堆内存 (数据类型间的存储区别)
  6. 西电通信技术基础实验
  7. AC日记——Two poj 1849
  8. mysql sga_MySQL王者晋级之路(一)安装、体系结构和存储引擎
  9. 免安装版MySQL(解压版)安装详细教程及注意事项
  10. JVM虚拟机概述(2)