OberonCore
https://forum.oberoncore.ru/

Not enough registers
https://forum.oberoncore.ru/viewtopic.php?f=116&t=1476
Страница 1 из 1

Автор:  Илья Ермаков [ Среда, 15 Апрель, 2009 00:53 ]
Заголовок сообщения:  Not enough registers

При компиляции следующей процедуры столкнулся с ошибкой компиляции. Квадратик ошибки, помещённый после WHILE, гласит:
"Not enough registers; simplify expression".
Код:
   PROCEDURE (set: StdSet) Contains (rec: ANYPTR): BOOLEAN;
      VAR t: Term;
   BEGIN
      t := set.list.first;
      WHILE (t # NIL) & (Services.AdrOf(t(Item).rec^) < Services.AdrOf(rec^)) DO t := t.next END;
      RETURN (t # NIL) & (Services.AdrOf(t(Item).rec^) = Services.AdrOf(rec^))
   END Contains;


Любопытно. Компилятор не может распределить регистры... А выражение вроде не сложное. (Было SYSTEM.ADR, нормуль, а при копировании модуля отдельно в другую подсистему надо было отвязать от SYSTEM...)
Впрочем, упрощение очевидно и по любому нужно - второй-то адрес инвариантен.

Автор:  Info21 [ Среда, 15 Апрель, 2009 06:16 ]
Заголовок сообщения:  Re: Not enought registers

Илья Ермаков писал(а):
Квадратик ошибки, помещённый после WHILE, гласит:
"Not enought registers; simplify expression".
Совет, похоже, правильный, с учетом извращения, которое там просматривается :)

Проще надо, молодые люди, проще.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/