В BlackBox скорее всего есть оптимизация, связанная с вычислением констант на этапе компиляции. Если обе части бинарной операции константы, то результат вычисляется на этапе компиляции. Например, CONST MegaByte = 1024 * 1024; Умножение будет выполнено на этапе компиляции и будет получен результат 1048576.
Допустим есть выражение y := x + 100 + 1, то казалось бы, компилятор используя такую простую оптимизацию должен вычислить 100 + 1 и сразу подставить 101, но если компилятор рассматривает выражение, как y := ((x + 100) + 1), то выражение в первых скобках не является константой поэтому и +1 не будет прибавляться, а все эти операции будут выполняться в run-time. А, если, допустим, написать, y := 100 + 1 + x, то компилятор сможет на этапе компиляции вычислить 100 + 1, так как будет вычислять y := ((100 + 1) + x).
|