Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 18:54

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Ошибки оптимизатора
Автор Сообщение
  Заголовок сообщения:  Re: Ошибки оптимизатора  Ответить с цитатой
Kopa писал(а):
А какая версия SP-Forth? У меня вроде всё правильно.

Версия 4.20 под Windows.
А тут был-бы более подходящим вопрос о версии файла macroopt.f.
Давно не заходил в репозиторий SPF, а там, как раз, ошибку, подобную обнаруженной мной, и исправили (в версии 1.78 файла macroopt.f).
Сообщение Добавлено: Пт дек 14, 2012 22:42
  Заголовок сообщения:  Re: Ошибки оптимизатора  Ответить с цитатой
Kopa писал(а):
У меня вроде всё правильно.


Однако, всем следует обновить оптимизатор. Я сам нашел ошибку совсем недавно
http://spf.cvs.sourceforge.net/viewvc/spf/src/macroopt.f?revision=1.79
Сообщение Добавлено: Пт дек 14, 2012 11:42
  Заголовок сообщения:  Re: Ошибки оптимизатора  Ответить с цитатой
А какая версия SP-Forth?
У меня вроде всё правильно.
Сообщение Добавлено: Чт дек 13, 2012 22:25
  Заголовок сообщения:  Re: Ошибки оптимизатора  Ответить с цитатой
Код:
\ DIS-OPT

VARIABLE VAR1  5 VAR1 !
VARIABLE VAR2  1 VAR2 !

: SUBR  VAR2 @ VAR1 @ LSHIFT ; SUBR

5 VAR1 ! 
32 VAR2 ! 

: SUBR1 VAR2 @ VAR1 @ RSHIFT ; SUBR1 

( 2048 0 ) \ с оптимизатором - ошибки
( 32 1 )   \ без оптимизатора - нет ошибок
Сообщение Добавлено: Чт дек 13, 2012 17:02
  Заголовок сообщения:  Re: Ошибки оптимизатора  Ответить с цитатой
Mihail писал(а):
Честно говоря я этим принебрег.

В принципе, конечно, можно и пренебречь. Но некоторые захотят
обрабатывать числовые файлы с помощью EVALUATE.
Стек тот же массив. Поэтому лучше все-же не пренебрегать и учитывать
то, что стек может быть и очень большим.
За коррекцию - спасибо.
Сообщение Добавлено: Чт июл 08, 2010 15:55
  Заголовок сообщения:  Re: Ошибки оптимизатора  Ответить с цитатой
chess писал(а):
В оптимизаторе не учтено, что смещение указателя стека параметров в пределах байта.


Честно говоря я этим принебрег.
Не думал, что кто-то создаст линейный участок кода,
в котором на стек будет положено более 32-х значений.
Что-то опять проблема с CVS

Требуемые изменения:

+: X?EBP C@ C>S OFF-EBP  +
+ 0x40 + 0xFFFFFF80 AND
+ IF EVEN-EBP THEN ;

+: 2?EBP OVER 2+ X?EBP ;
+: 3?EBP OVER 3 + X?EBP ;

- DUP3B?[EBP] M_WL 2_,_STEP +EBP REPEAT
+ DUP3B?[EBP] M_WL 2?EBP 2_,_STEP +EBP REPEAT

- DUP 45C7 = M_WL 2_,_STEP +EBP 4_,_STEP_ REPEAT \ MOV X [EBP] , # X
+ DUP 45C7 = M_WL 2?EBP 2_,_STEP +EBP 4_,_STEP_ REPEAT \ MOV X [EBP] , # X

- DUP 85448B = M_WL 3_,_STEP +EBP REPEAT \ MOV EAX, X [EBP] [EAX*4]
+ DUP 85448B = M_WL 3?EBP 3_,_STEP +EBP REPEAT \ MOV EAX, X [EBP] [EAX*4]
Сообщение Добавлено: Чт июл 08, 2010 15:43
  Заголовок сообщения:  Re: Ошибки оптимизатора  Ответить с цитатой
В оптимизаторе не учтено, что смещение указателя стека параметров в пределах байта.
Поэтому
Код:
: s1 
1 2 3 .... 32 33 ; 

будет некорректно скомпилировано и даст ошибку. Что с этим делать решать Михаилу :)
Сообщение Добавлено: Ср июл 07, 2010 13:08
  Заголовок сообщения:   Ответить с цитатой
Заменил строку
Код:
OP2 @ W@    45C7 XOR  \ MOV X1 [EBP], # 4444 \ $ 4444 5555 OR

на
Код:
OP2 @ 2+ C@
OP0 @ 2+ C@  XOR
OP2 @ W@    45C7 XOR OR \ MOV X1 [EBP], # 4444 \ $ 4444 5555 OR

и ошибки указанного выше типа исчезли - спасибо.
Сообщение Добавлено: Чт ноя 06, 2008 15:12
  Заголовок сообщения:   Ответить с цитатой
Доступ к http://spf.cvs.sourceforge.net у меня будет не ранше чем завтра.

Вообще надо к строке

Код:
OP2 @ W@    45C7 XOR  \ MOV X1 [EBP], # 4444 \ $ 4444 5555 OR


Добавить дополнитьельное условие

Код:
      OP2 @ 2+ C@
      OP0 @ 2+ C@  XOR
      OP2 @ W@    45C7 XOR OR \ MOV X1 [EBP], # 4444 \ $ 4444 5555 OR
Сообщение Добавлено: Чт ноя 06, 2008 14:07
  Заголовок сообщения:  Ошибки оптимизатора  Ответить с цитатой
Разворачивал циклы однотипных операций. Обнаружил ошибки в работе оптимизатора.
Вот простейший пример(работал в консоли):
Код:
: 2PLUS + + ;
Ok
1 2 3 2PLUS .
6  Ok
: S1 1 2 3 2PLUS ;
Ok
S1 .
7  Ok \ это ошибка - результат должен быть не 7, а 6
: S2 1 2 3 + + ;
Ok
S2 .
6  Ok
Сообщение Добавлено: Чт ноя 06, 2008 11:03

Часовой пояс: UTC + 3 часа [ Летнее время ]


cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB