体系结构具有不同的寻址模式,其中一些模式限制了它们可以处理的位移量。想象一下,架构有两条指令:
#1 ldw reg, signed imm7(reg) # max displacement = 64 (2^6)
#2 ldw reg, (index-reg, base-reg) # no limit on amount of displacement
我很难理解:编译器如何在这两条指令之间进行选择。在链接时间之前,通常不知道所需的位移。
编译器是否总是采用保守的方法,只有在知道最大位移时才使用指令#1?或者有什么我想念的东西?