我有以下三个地址代码,其中n是一些外部常量:
x = 0
i = 0
L: t1 = i * 4
t2 = a[t1]
t3 = i * 4
t4 = b[t3]
t5 = t2 * t4
x = x + t5
i = i + 1
if i < n goto L
我想尽可能地优化它。这是我到目前为止所提出的:
x = 0
i = 0
t1 = -4
L: t1 = t1+4
t5 = a[t1] * b[t1]
x = x + t5
i = i + 1
if i < n goto L
任何人都可以提供更正/额外优化吗?
答案 0 :(得分:1)
我可能会这样做:
x = 0
t1 = (n-1)*4
L: t5 = a[t1] * b[t1]
x = x + t5
t1 = t1 - 4
if t1 >= 0 goto L
我不知道目标计算机是什么,但最后两条指令通常可以使用SUB
/ JNS
(保存比较)来完成。