优化三个地址码

时间:2013-04-16 15:29:36

标签: optimization assembly compiler-construction compiler-optimization machine-code

我有以下三个地址代码,其中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

任何人都可以提供更正/额外优化吗?

1 个答案:

答案 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(保存比较)来完成。