0

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

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

4

1 回答 1

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(这样可以节省比较)。

于 2013-04-16T15:40:46.250 回答