我有几个关于寄存器分配的问题,特别是脏/清洁/可重新索引的值。据我所知:在使用前必须将脏值溢出并恢复;干净的值来自内存负载,只需从内存中恢复;并且可重新实现的值来自恒定负载,只需通过加载常量来恢复。我的问题是:
1)很容易确定某个值是否干净,但我们如何确定它已加载的内存位置?我们知道哪个寄存器保存了内存位置,但该寄存器中的值可能会发生变化。我们只计算从一个恒定位置或可重新定位的位置加载的干净东西吗?
2)商店肯定会弄脏一个干净的价值。如果r0是从内存位置1024加载的,而我们只有一个存储到1024,那么r0现在很脏。更糟糕的是,那些寄存器我们没有溢出,因为它们具有清洁价值,现在被覆盖了?类似于以下序列。