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/ |