谁能给我讲讲gcc的寄存器分配的算法,看了3天了还不是很明白
看了几天了,还不是很明白。
粗略的看了下,个人的理解是
local-alloc.c用于分配一个block中的register,
global.c用于一个function中的register allocation,
好像有个什么pseudo register,对于每个pseudo register都要分配一个hard register.
很疑惑,为什么需要local-alloc.c,global.c难道不能完成所有的register allocation工作吗
用bit表示一个hard register,386有53个寄存器,所以需要2个32位整数才能表示
除此之外,就是一团浆糊了.
有牛牛讲讲吗,global.c中是用的鲸书中讲的图着色的方法吗,谢谢了
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
local-alloc.c用于分配一个block中的register,但是出口处变量活跃怎么办?所以,global.c用于global的register allocation。
pseudo register是RTL里面的,对于每个pseudo register都要分配一个hard register就是寄存器分配。
为什么需要local-alloc.c?历史原因?global.c难道不能完成所有的register allocation工作吗?可以,没什么不可以的,你去做么?现在好像有个开发分支就是针对global.c的。
global.c中是用的图着色的方法