0

我正在准备编译器考试,我在过去的论文中发现了以下两个我不知道如何回答的问题:

1. Array bounds checking requires code to check each array subscript to ensure it
falls within the array's declared range. How could induction variable analysis be
used to avoid repeated bounds checks in "for" loops.

2. Give a short example in Java in which one array address calculation is loop-
invariant and another array address is an induction variable.

我知道不变量和归纳变量的含义,但我真的不知道在解释这两种解决方案方面对我的期望是什么。

如果有人帮助我解释,我将不胜感激。

谢谢!

4

1 回答 1

0

第一个非常简单 - 因为归纳变量每次迭代都会增加固定量,您可以预先计算用作数组下标的任何归纳变量的最大值,并检查它是否不超过数组边界。您将在执行循环之前执行一次此操作,而不是在每次迭代时检查下标。

至于第二个,有很多关于循环不变和归纳变量循环的例子(用各种语言,包括Java)——这些术语只需要谷歌。

于 2013-03-01T16:04:10.793 回答