【 在 snnn (cm) 的大作中提到: 】
: 标 题: Re: 一个编译优化问题:怎么让一段basic block的存储空间使用最
: 发信站: 水木社区 (Mon Jan 31 10:20:43 2022), 站内
:
: 爬上来更新一下:
: 这个问题可以抽象成点着色问题,用SAT来解决。程序的每个变量对应抽象图中的一个顶点。如果两个变量的声明周期有overlap,我们就用一条边把它们的顶点连起来。然后做点着色,看最少用多少种颜色可以把这个图给涂了(要求每条边的两个顶点的颜色必须不同)。
这个是寄存器分配的问题解法,和你顶楼的问题不太一样,你原来的问题是要考虑指令调度对寄存器分配的影响
:
: 这个问题的进一步扩展是:如果一个C程序,假设已知malloc/free将如何被调用,如何设计一个内存分配器使得peak memory usage最小。这个时候就需要考虑内存碎片的问题,如何让浪费的内存最少。这个在研究里称为Compile time memory allocation(CMA) problem,或者Dynamic Storage Allocation (DSA) problem。都有成熟但非最优的算法。
你这个假设的条件太强了,在这个前提下,大多数程序直接用静态分配的内存就可以了
: --
:
: ※ 来源:·水木社区
http://www.mysmth.net·[FROM: 107.139.34.*]
--
FROM 104.133.8.*