IPB

Здравствуйте, гость ( Вход | Регистрация )

> Refer, еще один ЯП для срыва мозга
tolich
сообщение 05 Jun 2010, 13:06 (Сообщение отредактировал tolich - 04 Jul 2020, 13:40)
Сообщение #1

😸🧡✊✌️
Сообщений: 16 423
Спасибо сказали: 3292 раза




Более полной документацией озабочусь позднее, пока только основные фишки:
1) Forth-подобный синтаксис. (Хотя это не совсем Forth...)
2) Компилятор на Refer, входит в поставку.
3) Только COM-файлы, никаких библиотек поддержки.

Скачать 1.03
Скачать 1.04
Скачать 1.05
Скачать 1.06


--------------------
Я слежу за тобой!
* tolic.narod.ru

Цитата
Всегда приятно осознавать, что кто-то делает что-то хуже, чем делал бы ты, если бы умел.
Борис "Бонус" Репетур, "От винта!", выпуск 38.


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
 
Start new topic
Ответов
tolich
сообщение 04 Jul 2020, 13:39
Сообщение #2

😸🧡✊✌️
Сообщений: 16 423
Спасибо сказали: 3292 раза




Новая версия, 1.06.
1) Изменена командная строка.
1.1) Ключ -E превратился в -o (он же --outfile).
1.2) Добавлен ключ --format=<format>, где <format> либо com, либо exe. Да, мы теперь умеем в EXE-файлы. Компилятор, скомпилированный в COM-файл, по умолчанию создаёт COM-файлы, а скомпилированный в EXE-файл, — EXE-файлы. Для изменения формата используется этот ключ.
1.2a) Если компилятор, скомпилированный в COM-файл, преобразовать в EXE-файл, он должен работать. Если компилятор, скомпилированный в EXE-файл, преобразовать в COM-файл, он работать не будет, потому что в его коде запуска нет инициализации регистров SS и SP.
1.3) Слово goal добавлено для указания адреса слова, которое выполняет запуск. Для EXE-файла оно просто устанавливает значение поля IP в заголовке, для COM-файла настраивает команду безусловного перехода, которую необходимо добавить в начало кода. Способы различны, но субъективно первый самый простой, поэтому на него ссылается сообщение об ошибке:
Код
defer UNUSED-WORD
Код
code UNUSED-WORD
  jmp $100 #
end-code
Код
start-code
  jmp $100 #
end-code
Код
$E9 c, -3 ,
1.4) Впрочем, если код запуска в начале файла (т.е., по адресу $100), команда goal факультативна и ничего не меняет. Это значит, что COM-файл не обязан начинаться с команды jmp.

2) Снова перераспределена память.
2.1) Стеки вынесены в отдельный сегмент стека, увеличены, но их использование всё так же контролируется.
2.3) Файловый буфер и буфер памяти перемещены в старшие адреса в сегменте данных.
2.4) Оставшаяся часть сегмента данных это словарь, и контролируется, чтобы он не пересекал свою верхнюю границу.

3) Тестирование
3.1) Добавлены слова T{ -> }T для создания тест-кейсов. Формат:
Код
T{ <тестируемая-последовательность-слов> -> <ожидаемые-результаты> }T
Пример:
Код
T{ 1 dup -> 1 1 }T
В случае несовпадения актуальных результатов с ожидаемыми, будет выведено сообщение об ошибке. В случае ошибки при выполнении самих слов, скорее всего, тоже.
3.2) Добавлены слова test1 и test2 для тестирования механизма catch/throw. Файл "throw-3.ref":
Код
T{ test1 -> 0 0 }T
T{ test2 -> -10 }T
3.3) Ещё много тестовых файлов с комментариями, что проверяется, и какие ожидаются результаты. Не пройдёт и полгода, и я снабжу комментариями и сам код refer. =).gif

4) Да, теперь всюду словари.
4.1) Для компиляции макроопределения используется словарь macrodefs, для исполнения — macrocode. Комментарии удаляются в первом, do: и if-true: работают из второго. Теперь do: и if-true: валидны только в макросах.
4.2) Для ключей командной строки — словарь keyparams.
4.3) Для пропуска слов в условной компиляции — словарь condition.

P.S. Добавил пару тестов.


--------------------
Я слежу за тобой!
* tolic.narod.ru

Цитата
Всегда приятно осознавать, что кто-то делает что-то хуже, чем делал бы ты, если бы умел.
Борис "Бонус" Репетур, "От винта!", выпуск 38.
Go to the top of the pageAdd Nick
 
+Quote Post

Сообщений в этой теме
- tolich   Refer   05 Jun 2010, 13:06
- - Nariel   какие особенности у Refer?   05 Jun 2010, 18:40
- - gamecreator   нич-чего не понимаю! (с)   05 Jun 2010, 18:54
- - etoprostoya   Присоединяюсь.   05 Jun 2010, 19:33
- - Flashback   Одобряю эту тему   05 Jun 2010, 19:52
- - tolich   Для тех, кто не понял, поясню: refer.com - компиля...   05 Jun 2010, 20:11
- - Chrono Syndrome   Хм, уже третий Forth-образный язык в разделе - зан...   05 Jun 2010, 20:34
- - gamecreator   краткое описание команд не повредит. вообще язык п...   05 Jun 2010, 20:38
- - tolich   Вступление В далеком 1994 году я разрабатывал соб...   25 Dec 2010, 12:32
- - tolich   Итак, прошло почти джва года... ну и Лентяй же ты,...   02 Jun 2012, 09:14
- - tolich   Примечание: в дальнейшем если я буду писать ...   02 Jun 2012, 10:53
- - tolich   Прямой шитый код и типы слов В реализации применё...   02 Jun 2012, 12:40
|- - tolich   Цитата(tolich @ 02 Jun 2012, 12:40) Слово...   10 May 2020, 13:43
- - tolich   Случайно заметил, что в мета-ассемблере есть ошибк...   29 Mar 2020, 18:16
- - hippocamus   А вообще возможно под 10-й запустить com-файл? Без...   29 Mar 2020, 18:49
- - tolich   Без досбокса или другой VM, насколько я знаю, нет....   30 Mar 2020, 00:21
- - tolich   Добавил распознавание слов вида 'X', где X...   10 Apr 2020, 13:58
- - tolich   Оказывается, моё расширение 'X' для чисел ...   06 May 2020, 20:28
- - tolich   Теперь в макросах допустимы комментарии (они больш...   13 May 2020, 13:36
- - tolich   Новая версия. Изменения настолько глобальные, что ...   02 Jun 2020, 21:28
- - tolich   Обновление. 1. Добавлен контроль управляющих струк...   15 Jun 2020, 12:02
- - tolich   Обновление. Кроме упомянутого исправленного if-tru...   18 Jun 2020, 21:37
- - tolich   Новая версия, 1.06. 1) Изменена командная строка. ...   04 Jul 2020, 13:39


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 11 September 2025 - 04:09
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика