Здравствуйте, гость ( Вход | Регистрация )
05 Jun 2010, 13:06
(Сообщение отредактировал tolich - 04 Jul 2020, 13:40)
Сообщение
#1
|
|
![]() 😸🧡✊✌️ Сообщений: 16 554 Спасибо сказали: 3515 раз |
Более полной документацией озабочусь позднее, пока только основные фишки:
1) Forth-подобный синтаксис. (Хотя это не совсем Forth...) 2) Компилятор на Refer, входит в поставку. 3) Только COM-файлы, никаких библиотек поддержки. Скачать 1.06 -------------------- Я слежу за тобой!
tolic.narod.ru![]() Цитата Всегда приятно осознавать, что кто-то делает что-то хуже, чем делал бы ты, если бы умел. Борис "Бонус" Репетур, "От винта!", выпуск 38. |
|
|
|
![]() |
04 Jul 2020, 13:39
Сообщение
#2
|
|
![]() 😸🧡✊✌️ Сообщений: 16 554 Спасибо сказали: 3515 раз |
Новая версия, 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 3.3) Ещё много тестовых файлов с комментариями, что проверяется, и какие ожидаются результаты. Не пройдёт и полгода, и я снабжу комментариями и сам код refer. T{ test2 -> -10 }T 4) Да, теперь всюду словари. 4.1) Для компиляции макроопределения используется словарь macrodefs, для исполнения — macrocode. Комментарии удаляются в первом, do: и if-true: работают из второго. Теперь do: и if-true: валидны только в макросах. 4.2) Для ключей командной строки — словарь keyparams. 4.3) Для пропуска слов в условной компиляции — словарь condition. P.S. Добавил пару тестов. -------------------- Я слежу за тобой!
tolic.narod.ru![]() Цитата Всегда приятно осознавать, что кто-то делает что-то хуже, чем делал бы ты, если бы умел. Борис "Бонус" Репетур, "От винта!", выпуск 38. |
|
|
|
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![]() ![]() |
| Текстовая версия | Сейчас: 10 February 2026 - 01:42 |
|
Copyright by Алексей Крючков
Programming by Degtyarev Dmitry |
|