Часто задаваемые вопросы - DSSP FAQ

Версия 2.0 ( последние изменение июнь 2002 г.)

Q1. Как создать целевую программу?

A: Вы должны сохранить текущее состояние ДССП системы с помощью команды "SAVE fname DSSP-phrase". Файл fname.exe создастя в указанной директории или в текущей. DSSP-phrase это строка, которая выполниться после запуска fname.exe. Не забудьте следующие важные моменты:
a) Испольщуйте префикс FIX в определении данных, если вы хотите что бы они имели определенное значение при старте программы.
b) Для уменьшения размера системы и значит исполняемого файла почистите подсловари. Для запуска вашей программы вам может быть иногда достаточно всего 1-го слова!

Q2. Где посмотреть пример написания программы?

A: Смотрите директорию ftp.forth.org.ru/dssp/example  Библиотеки тоже являются неплохими примерами. А также ftp.forth.org.ru/dssp/users где размещены программы, написанные различными пользователями.

Q3. Где найти файл DOS-экстендера для DSSP386?

A: Сейчас мы включаем его в дистрибутив, хотя ранее DSSP386 была сделана для пользователей, располагающих официальной версией системы программирования Pharlap. Статус файла run386.exe я не понял, поэтому не беру на себя ответственность за его распространения. Но думаю, если Вы располагает любой программой, использующей для запуска это файл, то вы можете запустить и ДССП.

Q4. Где у Вас версия ДССП для реального режима ?

dsspf.exe, ded.exe

Q5. Какую модель памяти использует ДССП для реального режима?

    Если не оговорено противное, все *.exe - это ДССП для реального режима c разным составом словарей. Вас могла смутить 32-битность системы. ДССП для реального режима использует 32-битный сегментный (до 1 мегабайта) адрес данных, переменное число сегментов данных и один сегмент (64k) для тел процедур ДССП. В этом сегменте адресация 16 битная - в целях компактности. Максимальная длина одного массива - 64K -16 байт, хотя можно потрудиться и сделать виртуальный массив - но в этом случае лучше переходите на ДССП для защищенного режима.
    Название модели памяти нам неизвестно. Возможно, это оригинальная модель, возможно - это одна из известных. Если кто разберется - сообщите ;)

Q6. Hасколько я понял - DED является полнофункциональной ДССП-средой?

Скорее оболочкой в духе редактора-среды (Микромир, rk). Перед испрользованием отредактируйте ded.ini - нацельте имеющиеся там имена на ваши директории с библиотеками и документацией ДССП, и выполните:
LOAD DED.INI SAVE DED_new QQ
Этой строкой вы создаете файл ded_new.exe, при запуске выполняющий команду QQ - запуск текстового редактора. Но в принципе вы действительно правы и ее можно использовать как ДССП систему с большим количеством имеющихся в ней добавок.

Q7. Есть ли описания формата программы на ДССП, и проч., ибо описание базовых слов - имеется, а как программу написать - непонятно... В общем - я хотел спросить о факте существования "программы" как таковой... Почему это возможно? Ведь, по идее, должны существовать только слова: написал слово - запустил слово. Хочешь программу - пиши слово, и запускай его, получишь программу. А вот почему возникло понятие "программа" - не ясно...

В ДССП есть единственный объект - слово. PROGRAM $NAME - это единица компиляции, вернее перекомпиляции. Слова после PROGRAM удаляются и компилируются/компонуются заново. А запускать по имени можно любое слово. (смотри "Управление словарем" в DOC/table.txt )

Q8. Есть ли компиляторы с ДССП в машинные коды i386?

Компиляторов нет. Хотя задача сам по себе не сложная.

Q9. Как программы на ДССП соотносятся по скорости выполнения с аналогичными программами на ассемблере и ЯВУ

ДССП по скорости выполнения отстает от ассемблерных программ в четыре раза и не очень сильно отстает от неоптимизированных компиляторов. Для повышения быстродействия обычно переписывают на ассемблере внутренний цикл программы.Код ДССП заметно компактнее кода большинства компиляторов. При достаточно большом размере программы (тысяча строк)исполнительный файл ДССП для реального режима обычно меньше эквивалентного ему файла Си-программы.

Q10. Как померить быстродействие ДССП на моем компьютере?

Мы используем для оценок следующию методику:

B10 [установит десятичеую систему исчисления]
BELL 10000000 DO NOP BELL

Нажимаем "ENTER" и секундомером засеките время выполнения между 2 сигналами. Практика показывет, что это весьма неплохой прикидочный тест. Приведем таблицу замеров скорости работы ДССП по этому тесту на Pentuim 120 под упралением WIN98. Все замеры выполнены при приблизительно одинаковых условиях работы. Они дают сравнительное представление о скорости работы разных версий DSSP на IBM PC.

Версия Время в секундах Операций NOP в секунду

Файл для скачивания

V 1.0 2 сек 5 000 000 dssp-v10.rar
V 3.30 3 сек 3 333 333 dssp-v33.rar
V 4.42 5 сек 2 000 000 dssp-v44.rar
V 5.0 WIN32 9 сек 1 111 111 dssp-v5w.rar
V 5.0 Dos4Gw 25 сек    400 000 dssp-v5d.rar

Различия в скорости от версии к версии можно объяснить только постоянным утяжелением внутреннего строения системы и введением дополнительных механизмов в ее работу.

Q12. Почему в программах (OPTION.DSP, например) используется какой-то, на мой взгляд, неординарный синтаксис (много неалфавитных символов)

Был лозунг "Чем короче - тем лучше". Поэтому D вместо фортовского DROP и так далее. Потом оказалось, что если делать интерфейс к программам на ЯВУ, то наличие спецсимволов весьма помогает выделять специфические операции. Есть мнемонические рекомендации:

Q13. Почему так много двоеточий?

Одно двоеточие - перед именем процедуры. Два двоеточия - сделать слово неудаляемым при CLEAR $NAME_OF_VOC (аналог глобальности и экспортируемости).

Q14. Какие библиотеки являются наиболее употрелительными? Я увидел у вас на сайте две: Локтевскую (кстати, похоже, не полностью), и "Библиотеку ДССП-программ". Есть ли еще какие-либо библиотеки, и насколько вышеназванные полны?

Библиотека Локтева - расширения для защищенного режима и личная, удобная для его приложений модификация части стандартной библиотеки. По вопросам ее неполноты лучше спросить у него лично по почте. Вообще-то в директории DSSP/users будут размещаться программы, не проходившие серьезного тестирования, но библиотека Локтева проверена довольно хорошо и постоянно дорабатывается.

Q15. Где взять объектно-ориентированную версию?

Объектно-ориентированная версия была сделана A.Ю. Грачевым при подготовке диссертации и представляет собой некоторый пик в развитии ДССП. Длчя ознакомления нужно вхять файл dsspgr.rar, в котором находится ДССП для реального режима, несколько примеров и описания. Библиотека к этой версии годится обычная.