当前位置:网站首页>【问题思考总结】为什么寄存器清零是在用户态进行的?
【问题思考总结】为什么寄存器清零是在用户态进行的?
2022-07-01 05:33:00 【kev_gogo】
问题提出
在看到王道书上这个题的时候,我首先想到这个不是有很多寄存器是不透明的吗,因此不是应该用户态一定操作不了,甚至是管态都操作不了吗,基于这个思想,我进行了一定的查阅。
思考
经过查找发现,事实上如果想到了汇编的层面(但是这对我一个非科班学生没学过真的有点难唉,感慨学艺不精)就简单很多了。举一个最简单的例子:int i=0,这句代码实际上就是将一个寄存器里的值设为0,而这样的操作显然是很平常的操作,也完全用不到进入管态,因此是在用户态(目态)进行。
延伸思考
C语言细节
经过思考我又想到难道所有设置变量都是在寄存器中?可是寄存器是有限的啊,于是查找发现在C语言中用户可以自己定义寄存器变量如:register int i=0,这样的格式,而即便不这样做,编译器也可能会将变量存在寄存器中因为显然对于某些变量存在寄存器中可以极大提高系统的效率(比如经常使用的变量,在循环中的变量,基于局部性原理,这个括号内为个人猜想)。
寄存器细节
另外,为了证实寄存器可以存放变量,我又想起了程序员透明和程序员不透明这个知识点,经过查阅发现,通用寄存器是汇编程序员不透明,这也证实了之前的汇编层调用寄存器说法的真实性
参考资料
【1】http://www.cskaoyan.com/thread-7075-1-10.html
【2】https://blog.csdn.net/HumanpieceY/article/details/85917291
边栏推荐
猜你喜欢

CockroachDB: The Resilient Geo-Distributed SQL Database 论文阅读笔记

在Rainbond中一键部署高可用 EMQX 集群

What is the at instruction set often used in the development of IOT devices?

A little assistant for teenagers' physiological health knowledge based on wechat applet (free source code + project introduction + operation introduction + operation screenshot + Thesis)

JDBC常见面试题

多表操作-外键级联操作

小程序常用组件小结

如何创建一个根据进度改变颜色的进度条

Precautions for use of conductive slip ring

Thread process foundation of JUC
随机推荐
轩逸保养手册
boot+jsp的高校社團管理系統(附源碼下載鏈接)
Mongodb学习篇:安装后的入门第一课
Intelligent operation and maintenance: visual management system based on BIM Technology
HDU - 1024 Max Sum Plus Plus(DP)
Typeorm framework
[ffmpeg] [reprint] image mosaic: picture in picture with wheat
How to select conductive slip ring material
Worried about infringement? Must share copyrightless materials on the website. Don't worry about the lack of materials for video clips
Redis数据库的部署及常用命令
数字金额加逗号;js给数字加三位一逗号间隔的两种方法;js数据格式化
Summary of common components of applet
基于微信小程序的青少年生理健康知识小助手(免费获取源码+项目介绍+运行介绍+运行截图+论文)
Ssgssrcsr differences
[RootersCTF2019]babyWeb
A little assistant for teenagers' physiological health knowledge based on wechat applet (free source code + project introduction + operation introduction + operation screenshot + Thesis)
Multi table operation - foreign key cascade operation
导电滑环使用的注意事项
QDataStream的简单读写验证
QDataStream的簡單讀寫驗證