История изменений
Исправление wandrien, (текущая версия) :
Ничего не понятно.
Может так понятнее)
word PHO_LookupRegForNode(word P1)
when PHOptimization == 0:
return PHO_REG_INVALID;
word i = PHO_FIRST_REG;
while i < PHO_FIRST_REG + PHO_REGS do
when PHO_MatchNodes(PHO_RegNodeLink1[i], P1):
return i;
when PHO_MatchNodes(PHO_RegNodeLink2[i], P1):
return i;
inc i;
end:while
return PHO_REG_INVALID;
end
В каждый конкретный момент в регистре может быть только одна переменная.
void foo(int a; int b)
int x = a; /* Теперь регистр связан с двумя выражениями: x и a */
int y = b + 1; /* Теперь регистр связан с двумя выражениями: y и b + 1 */
end
Вообще говоря, содержимое регистра может быть эквивалентно неограниченному количеству выражений, если подряд присваивать переменные.
Исходная версия wandrien, :
Ничего не понятно.
Может так понятнее)
word PHO_LookupRegForNode(word P1)
when PHOptimization == 0:
return PHO_REG_INVALID;
word i = PHO_FIRST_REG;
while i < PHO_FIRST_REG + PHO_REGS do
when PHO_MatchNodes(PHO_RegNodeLink1[i], P1):
return i;
when PHO_MatchNodes(PHO_RegNodeLink2[i], P1):
return i;
inc i;
end:while
return PHO_REG_INVALID;
end
В каждый конкретный момент в регистре может быть только одна переменная.
void foo(int a; int b)
int x = a; /* Теперь регистр связан с двумя выражениями: x и a */
int y = b + 1; /* Теперь теперь связан с двумя выражениями: y и b + 1 */
end
Вообще говоря, содержимое регистра может быть эквивалентно неограниченному количеству выражений, если подряд присваивать переменные.