寄存器变量定义
arm汇编器对arm的寄存器进行了预定义,所有的寄存器和协处理器名都是大小写敏感的。预定义的寄存器如下:
1,ro-r15和r0-r15
2,a1-a4(参数,结果或者临时寄存器,与r0-r3同意)
3,v1-v8(变量寄存器,与r4-r11同意)
4,sb和sb(静态基址寄存器,与r9同意)
5,sl和sl(堆栈限制寄存器,与r10同意)
6,fp和fp(帧指针,与r11同意)
7,ip和ip(过程调用中间临时寄存器,与r12同意)
8,sp和sp(堆栈指针,与r13同意)
9,lr和lr(连接寄存器,与r14同意)
10,pc和pc(程序计数器,与r15同意)
11,cpsr和cpsr(程序状态寄存器)
12,spsr和spsr(程序状态寄存器)
13,f0-f7和f0-f7(fpa寄存器)
14,s0-s31和s0-s31(vfp单精度寄存器)
15,d0-d15和d0-d15(vfp双精度寄存器)
16,p0-p15(协处理器0-15)
17,c0-c15(协处理器寄存器0-15)
c语言寄存器变量register
用register声明的变量是寄存器变量,是存放在cpu的寄存器里的。而我们平时声明的变量是存放在内存中的。虽说内存的速度已经很快了,不过跟寄存器比起来还是差得远。
寄存器变量和普通变量比起来速度上的差异很大,毕竟cpu的速度远远大于内存的速度。寄存器有这么两个特点,一个是运算速度快,一个是不能取地址。
学过c的都应该知道每一个变量在内存中都占有一定的的空间,来存放数据。但是在寄存器中的变量是不能取地址的,编译器会报错。
来我们看看寄存器变量和普通话的变量的速度到底能差多少。
这段代码运行用了0.952秒
这段代码运行用了0.094秒
实际使用时,底层硬件环境的实际情况对寄存器变量的使用会有一些限制。每个函数中只有很少的变量可以保存在寄存器中,且只允许某些类型的变量。但是,过量的寄存器声明并没有什么害处,这是因为编译器可以忽略过量的或者不支持的寄存器变量声明。另外,无论寄存器变量实际上是不是存放在寄存器中,它的地址都是不能访问的。在不同的机器中,对寄存器变量的数目和类型的具体限制也是不同的。
几条关于register变量应该知道的东西,如下:
1.寄存器变量可以用来优化加速c语言程序
2.声名只需在类型前多加register 即可,eg register int quick; (quick 就是一个整形的寄存器变量)
3.register只是一个建议型关键字,能不能声名成功还取决于编译器(建议型的关键字还有c++中的 inline),若不幸没有请求成功,则变量变成一个普通的自动变量。
4.是无法对一个register变量取地址的(因为寄存器变量多放在寄存器而非内存中,内存有地址,而寄存器是无地址的)
5.即便没有请求成寄存器变量,没有如愿的放入寄存器中,但是,依然不能对他取地址,因为他已经被声明为register了,就是这么任性
三星神助攻!诺基亚6真心不贵还有情怀
如何维修电脑电源
分析 丨GaN功率器件格局持续变化,重点关注这两家厂商
如何使用Autodesk Inventor制作绞车模型
如何禁用并启用所有USB端口
寄存器变量定义
2018年第四季度 全球智能音箱市场呈现出飙涨的局面
消息称苹果Vision Pro尚未完全准备好,将于明年3月上市
诺基亚新机配置 Nokia剩余品牌价值还剩几何
LG Display公布全球首款12英寸全彩可伸缩显示屏
美图M8、美图T8对比评测:美图M8与美图T8外观、续航、摄像、价格对比,双8PK你喜欢谁?
变频调速装置有哪些特点
PAT-Series易拉盖启破力和全开力测试仪的技术参数
为何黑鲨游戏蓝牙耳机会成为手游党的不二选择?
芯片“自组装”何时能走向商用?
越狱有风险!近10万iPhone的微信客户端被劫持
雷蛇RazerPhone2游戏手机怎么样 值不值得购买
首席信息官如何部署人工智能的五个案例
几种IO口模拟UART的方案
中科院的重大科技成果进入井喷期