Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт апр 23, 2024 16:09

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 536 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9, 10, 11 ... 36  След.
Автор Сообщение
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Пн июл 10, 2017 00:11 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1293
Благодарил (а): 4 раз.
Поблагодарили: 18 раз.
Цитата:
Двойные целые в Форте лежат на стеке так, что на вершине стека оказывается старшая половина. От сего легко превращать двойное целое в одинарное и наоборот. И не только. Можно одинарное превратить в тройное, четверное и обратно. И все это легко, поскольку самая старшая ячейка числа всегда на вершине стека.

Кстати, а есть ли тут требования к росту стека. Вверх или вниз?
А к следованию байтов?
Если стек растёт вниз, то удобней делать так, чтобы на вершине была младшая часть. Благодаря чему можно сразу использовать пересылку через mm-xxm или иное расширение процессора.

А превращать двойное в одинарное и наоборот можно при любом раскладе ( 'drop' or 'nip' )
Если верхушка стека есть регистр, то всё ещё лучше

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Пн июл 10, 2017 00:26 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Victor__v писал(а):
Кстати, а есть ли тут требования к росту стека. Вверх или вниз?
Вот этого точно нету.

По порядку байтов вроде бы тоже нету. Но я напоролся при реализации Форта для 8-разрядного Атмел, что
5 SP@ @
у меня прочло не 5, а 0x500. Так-что придется подумать о перелопачивании. Короче, слово SP@ , которое присутствует в типовой реализации CATCH THROW в стандарте ANSI (хотя самого этого слова в наборе слов стандарта нет), скрытое требование на согласование слов ! @ и порядка байт в организации стека таки вводит. То есть фиксированного ограничения мол порядок байт тот или иной нет, но некоторое согласование разных мест Форт-системы требуется, если не хочется иметь вот такой смешной глюк.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Пн июл 10, 2017 00:53 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1293
Благодарил (а): 4 раз.
Поблагодарили: 18 раз.
Цитата:
Никто из создателей Форта для IBM PC именно вот на этот момент не жаловался

Просто пишу форт на интел и при копании вин-апи
Столкнулся с таким моментом
Функция может возвратить данные в виде 64-битного числа ( GetFileSize )
Вопрос где на стеке разместить верхнюю часть этого числа?
С одной стороны 2-м элементом позволяет использовать все прелести расширений, ежели такая необходимость возникнет. (Стек вниз, литл)
С другой стороны имеем несогласие с вековой мудростью форт-сообщества.
Пока реализован первый вариант

Вот и интересуюсь, Как бы будущему себе грабли не вставить.

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Пн июл 10, 2017 08:30 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Думаю так. Вот пусть у нас число 0x11223344
Его в памяти можно хранить малым эндианом, как на IBM PC
44 33 22 11
Большим эндианом, как на всех процессорах от Моторолы, в общем как на Макинтоше
11 22 33 44
Вопрос - а какой эндиан для Форта будет родной ?
Пусть стек растет вниз ибо нам привычно и так делается аппаратно, пусть при хранении двойного целого в Форте на вершине стека старшая половинка ибо так принято, пусть мы очень хотим, чтобы С@ из ячейки cell читала ее младший байт, т.е. давала практически полезное и логичное усечение одинарного целого до байта. Тогда порядок байт напрашивается такой (рассматриваю случай 16-разрядного Форта) :
22 11 44 33
А такой был у PDP-11. Получается, что PDP-эндиан для Форта родной, а все остальные случаи будут так или иначе чуть-чуть да неудобны. Ну и пусть так. Я это воспринимаю как данность и не стал бы что-нибудь менять только из-за того, что мы сейчас в основном под Интелом сидим. К тому-же, как ни крути, а PDP-11 - архитектурный идеал.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Пн июл 10, 2017 09:08 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
_KROL писал(а):
Так что, они(Hishnik и т.д.) будут когда-нибудь делать свой стандарт?
Так были поползновения сделать стардарт Russian Forth, но я поставил в той ветке всех в тупик простым вопросом - нельзя писать, что 2/ это деление на 2, ибо 2/ это не то-же, что 2 /
-3 2/ .
-2 Ok
-3 2 / .
-1 Ok
И что-то обсуждение на этом заглохло.
В общем, создание стандарта, это гораздо более сложная вещь, чем создание удобной реализации под одну конкретную архитектуру. В таких вещах, как разница между делением с округлением по полу и симметричным делением, разными эндианами и прочая и прочая надо как в сору рыться. Делать все как оно само выходит под IBM PC тут явно недостаточно. И самое главное - не получается сделать заметно лучше, чем тот-же ANSI. В конце концов выходит в той или иной степени его повторение.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 10, 2017 10:52 
Не в сети

Зарегистрирован: Пт янв 06, 2017 14:57
Сообщения: 365
Благодарил (а): 17 раз.
Поблагодарили: 1 раз.
.....


Последний раз редактировалось _KROL Пн июл 10, 2017 14:31, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Пн июл 10, 2017 11:52 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Ethereal писал(а):
Так были поползновения сделать стардарт Russian Forth, но я поставил в той ветке всех в тупик простым вопросом - нельзя писать, что 2/ это деление на 2, ибо 2/ это не то-же, что 2 /
-3 2/ .
-2 Ok
-3 2 / .
-1 Ok
И что-то обсуждение на этом заглохло..

Ветка этого обсуждения


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Пн июл 10, 2017 13:06 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Ethereal писал(а):
Так были поползновения сделать стардарт Russian Forth, но я поставил в той ветке всех в тупик простым вопросом

причина в другом: недостаточная мотивация и отсутствие согласованных действий хотя бы трех человек 8(

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Пн июл 10, 2017 13:55 
Не в сети

Зарегистрирован: Пт янв 06, 2017 14:57
Сообщения: 365
Благодарил (а): 17 раз.
Поблагодарили: 1 раз.
_KROL писал(а):
Ethereal писал(а):
Двойные целые в Форте лежат на стеке так, что на вершине стека оказывается старшая половина.
А я так не хочу! :( Ну ладно :? Спасибо, не знал! (завтра поправлю, скоро спать буду)
Так что, они(Hishnik и т.д.) будут когда-нибудь делать свой стандарт?

Слушай, но тогда твоё "5 SP@ @ ." у меня не будет работать!(sorry) Да и процессор так не делает(из TD):
Код:
ss:0080►0D00

PUSH EAX
Код:
ss:0080 0D00
ss:007E 0000 ; Старшая половина
ss:007C►FFFF ; Младшая половина

Так что как писал (разумеется не касается U/MOD), так и писать буду. А то путаешь тут меня :)


Последний раз редактировалось _KROL Ср июл 12, 2017 08:37, всего редактировалось 5 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Пн июл 10, 2017 15:32 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
mOleg писал(а):
причина в другом: недостаточная мотивация и отсутствие согласованных действий хотя бы трех человек 8(

Есть даже пять, но авторство стандарта - это не медалька, чтобы вешать ее себе на шею и всем показывать. Эллочка-людоедка тоже хотела быть как дочь миллионера, а вылилось все в острую сатиру. Никто не против слова DUP. Многие против только того, что кто-то будет иметь право указывать, что в Форте правильно, а что нет, ссылаясь на им же самим придуманный "авторитетный" документ.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Ср июл 12, 2017 01:29 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
_KROL писал(а):
А то путаешь тут меня :)
Да где-же путаю ? Говорю-же, что общепринято не так, а делай как хош.
Ethereal писал(а):
Не хочешь - делай как хочешь. Только тогда оговаривай, чтобы другие фортеры тебя понимали.
Вот в SPF 4.22
HEX 1122334455667788. U. U.
11223344 55667788


По поводу затертого сообщения. Для себя делай с моим исходником что хошь, хоть во что его преврати и хоть где используй. А если хочется показывать и выкладывать, то показывай твои доработки Форта отдельно. Без моего исходника в комплекте.
Предположим, что перед строчкой
BOOT DW DECIMAL, _MAIN_
там инклудится файл с доработками. Вот например так.
Ну или доработки на языке Форт для докомпиляции, или готовые программы.
Короче, мой ассемблерный исходник не хотелось бы видеть "улучшенным" так,
что я в восторг не приду, а все остальное делай.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Пн июл 17, 2017 20:19 
Не в сети

Зарегистрирован: Пт янв 06, 2017 14:57
Сообщения: 365
Благодарил (а): 17 раз.
Поблагодарили: 1 раз.
Ай! Опять забыл! Если что, реализуйте R> и >R лучше на ассемблере! Иначе это не оптимально(или ошибочно)...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Вт июл 18, 2017 15:17 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1293
Благодарил (а): 4 раз.
Поблагодарили: 18 раз.
Оп-на.
Приведика пример как реализовать примитивы >R и R> не на ассемблере.
Интересно стало.

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Вт июл 18, 2017 18:49 
Не в сети

Зарегистрирован: Пт янв 06, 2017 14:57
Сообщения: 365
Благодарил (а): 17 раз.
Поблагодарили: 1 раз.
OK.
Старый вариант:
: >R S@ DROP ; : R> R@ RDROP ;
Непраильно, т.к. забываю про адрес возврата(уж проще тогда использовать ассемблер!).


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Вт июл 18, 2017 20:08 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Можно и без ассма. Например, в SPF4 как-то так:
Код:
: -ret; [COMPILE] [ SMUDGE ( ClearJpBuff 0 TO LAST-NON ) ; IMMEDIATE
( скобки убрать для поддержки оптимизатора и в случае использования рекурсивных вызовов - я не использую )
: >r
[ 0x458B505B ,
  0x046D8D00 ,
  0xE3FF W, ]
-ret;

: r>
[ 0x89FC6D8D ,
   0x58500B45 ,
   0xE3FF W, ]
-ret;

STARTLOG
SEE >r
SEE r>

LOG
Код:
CODE >r
5D864F 5B               POP     EBX
5D8650 50               PUSH    EAX
5D8651 8B4500           MOV     EAX , 0 [EBP]
5D8654 8D6D04           LEA     EBP , 4 [EBP]
5D8657 FFE3             JMP     EBX
END-CODE
( 10 bytes, 5 instructions )

CODE r>
5D866B 8D6DFC           LEA     EBP , FC [EBP]
5D866E 89450B           MOV     B [EBP] , EAX
5D8671 50               PUSH    EAX
5D8672 58               POP     EAX
5D8673 FFE3             JMP     EBX
END-CODE
( 10 bytes, 5 instructions )


ps. Но надо разбираться в процессоре в части кодов инструкций и в форт-системе в части привязки ресурсов процессора к структурам данных форт-системы. :shock:

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 536 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9, 10, 11 ... 36  След.

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


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

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