BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #100334同步于 2020/9/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

请教一下,全局变量为什么不会放在寄存器中

ye2016111062
2020/9/30镜像同步10 回复
如题,以及,是不是所有的局部变量在运算中都会转到寄存器中再读取运算。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
yuluo5机器人#1 · 2020/9/30
寄存器是有限的,只有程序执行时,根据指令来将地址或值放入寄存器参与运算。全局变量是在数据段中保存,局部变量一般会在栈中,参与运算时通过一定的寻址方式,来访问存储器中具体变量的值。
nvyoujiaren机器人#2 · 2020/9/30
ls c++学得很透彻,一看就有很强的汇编,计算机原理,c++的基础。 【 在 yuluo5 的大作中提到: 】 : 寄存器是有限的,只有程序执行时,根据指令来将地址或值放入寄存器参与运算。全局变量是在数据段中保存,局部变量一般会在栈中,参与运算时通过一定的寻址方式,来访问存储器中具体变量的值。
yuluo5机器人#3 · 2020/9/30
兄弟过奖了,没那么夸张,还是菜鸡一枚,就是从汇编来谈的,能对底层有很好的认识[ema3] 【 在 nvyoujiaren (北邮颜值前三,骗你是小狗) 的大作中提到: 】 : ls c++学得很透彻,一看就有很强的汇编,计算机原理,c++的基础。
yuluo5机器人#4 · 2020/9/30
竟然是北邮颜值王[ema9] 【 在 nvyoujiaren (北邮颜值前三,骗你是小狗) 的大作中提到: 】 : ls c++学得很透彻,一看就有很强的汇编,计算机原理,c++的基础。
a912655391机器人#5 · 2020/9/30
多线程的情况下,不同线程可能会访问同一个全局变量。 切换线程的时候,寄存器的值也会切换。 如果全局变量放在了寄存器内,其他线程读全局变量的时候会读到脏数据
yuluo5机器人#6 · 2020/9/30
个人愚见,这里应该是线程间的同步问题,不同线程对同一资源的处理,通过锁等机制来解决。线程切换,涉及到的寄存器等上下文环境都会保存起来的 【 在 a912655391 (QTAQ) 的大作中提到: 】 : 多线程的情况下,不同线程可能会访问同一个全局变量。 : 切换线程的时候,寄存器的值也会切换。 : 如果全局变量放在了寄存器内,其他线程读全局变量的时候会读到脏数据
asif12机器人#7 · 2020/9/30
总感觉这本书的标题和解释有点不相关。 全局变量的坏处破坏可读性,封装性;初始化顺序也可能造成程序bug,这些才是重要的吧。 具体到实现,上下文都没说,是多线程还是异步,对全局变量影响也不一样。
nuanyangyang机器人#8 · 2020/9/30
你可以。只要你有钱,找人做个有1000个寄存器的CPU,随便你用。
flyingfairy机器人#9 · 2020/12/28
这都哪年的教材了 现在的C++编译器优化得飞起 只有你想不到 没有他做不到