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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 158 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 11  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 14, 2006 00:47 
Не в сети
Moderator
Moderator
Аватара пользователя

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

Что делают ?Exit и Perform ?


?Exit - выход из определения по условию, то есть то же, что и IF EXIT THEN
Бывает частенько нужен, особенно, если вы не любите пользоваться CASE

Perform - @EXECUTE - это было, например в info4th и в smal32 тоже было, по-моему.
in4 писал(а):
shift , как я понял, у тебя с параметром(к-й м.б. отрицательным), не так как RSHIFT LSHIFT в F94, да?

Это не я придумал, а Чак Мур. Так в железе лучше получается- ведь все равно двигать больше, чем на 32 бита при 32 разрядности данных всеравно не получится Ж8) старший бит в любом случае отдыхает. Так зачем заводить два слова, когда и так все ясно и понятно. Если параметр сдвига положительный - двигаем влево(умножаем) - при отрицательном двигаем вправо(делим)

in4 писал(а):
М. лучше 2имя назвать Dимя ?

Мне двойка в начале никогда не мешала. К тому же вполне возможно, что слова для организации форт-вм стоит назвать иначе, чем те же слова форт-системы. Но насчет D я не против. Хотя двойка хорошо выделяет слова (типизирует его) а буква D - будет с словом сливаться.


in4 писал(а):
от not отказались из-за многозначности. Предложили negate - смена знака и invert - побитовое отрицание.

основа ФВМ - это практически форт-ассемблер. Или, точнее, ассемблер языка форт, именно поэтому я считаю, что его нужно вынести из набора CORE слов в отдельный набор. Поэтому not - это просто синоним not ix86 процессора.

in4 писал(а):
*/ - масштабирование.

а вот насчет масштабирования может стоит ввести слова для работы с форматом 1.5 то есть слова с образованием результата двойной длинны- то же сложение с переносом и вычитание с заемом?


вопрос писал(а):
Необходимы, ну хотя бы действия со снятием с вершины стека и отдельно с неснятием, уже оптимизация будет на 2/3 минимум!

это в операциях ветвления? Или еще где-то?


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

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
oleg писал(а):
основа ФВМ - это практически форт-ассемблер. Или, точнее, ассемблер языка форт, именно поэтому я считаю, что его нужно вынести из набора CORE слов в отдельный набор. Поэтому not - это просто синоним not ix86 процессора.

Значит, invert , побитовое отрицание.
А есть еще значения - negate - смена знака.
А вот еще бывало значение =0 (0 -> TRUE=FFFF; <>0 ->False==0)

Поэтому рекомендуется их различать и использовать приведенные названия

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 14, 2006 12:05 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
in4 писал(а):
А вот еще бывало значение =0 (0 -> TRUE=FFFF; <>0 ->False==0)


А вот это то самое, что я и называю словом not

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


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

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
oleg писал(а):
а вот насчет масштабирования может стоит ввести слова для работы с форматом 1.5 то есть слова с образованием результата двойной длинны- то же сложение с переносом и вычитание с заемом?

Введение двойной разрядности имеет смысл для систем с CELL<24бита.
Если CELL=32бита, точности обычно хватает.
Для перехода к двойной точности м. использовать S>D и дальше все двойное.

М. определимся с преимущественной разрядностью ВМ?
16 разрядов минимум для мелких компов (или мелких задач) и двойная точность нужна как расширение.
32 разряда для обычных, м. и без двойной точности, по крайней мере, в ядре.
Промежуточные варианты подгонять к базовым... ;)

_________________
With best wishes, in4.


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

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
WingLion писал(а):
А вот это то самое, что я и называю словом not

Вот! О чем и говорилось... ;)
Так что давайте переходить на слова с одним значением, negate invert =0 !!

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 14, 2006 12:18 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
in4 писал(а):
М. определимся с преимущественной разрядностью ВМ?


А, может, просто определим, что есть VM16 и VM32?
И не навязывать "преимущественной" разрядности?

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
вопрос писал
Необходимы, ну хотя бы действия со снятием с вершины стека и отдельно с неснятием, уже оптимизация будет на 2/3 минимум!

это в операциях ветвления? Или еще где-то?

ЭТО ВЕЗДЕ где приходится одну и ту же переменную DUP DUP DUP , чобы сохранилась для след. действия.

ну вроде
Код:

int a=function();

if(a>2.781) goto label_if_a_g2__781;
else if(a>=1) goto nextlabel1;
else if(a>0) goto nextlabel2;
else if(a==0) goto label_if0;
else ...

a не меняется, но стек движется ...


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

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
WingLion писал(а):
А, может, просто определим, что есть VM16 и VM32?
И не навязывать "преимущественной" разрядности?

Определим. Это базовые модели.
А промежуточные можно реализовывать, изменяя некоторые слова одной из таких моделей, на какую больше похоже.
Меньше 16-разрядных IMHO, обычно не делают. Возможности маленькие...
У меня на 8-разрядной CELL компилятор сделать не получилось - размера адреса для структур данных не хватило... ;)
Даже двойная адресация не давала доступ к имеющейся памяти DOS.

Для CELL=16 бит иметь двойную точность очень желательно, отсутствие очень ограничивает возможности системы...
А если CELL=32бита или даже 24, то можно в ядре не делать двойную точность - меньше команд, проще реализация.

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июл 16, 2006 21:02 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Это к вопросу о двойной арифметике. Я ни разу не встречал использования слов для работы с числами двойной длинны в реальных вычислениях. Все возможное использование двойной арифметики, используемое мною - это во-первых:

addra addrb --> 1.1 D+ то есть двойное инкрементирование адресов

2DUP используется для работы с парой значений num addr то есть со значением
и с адресом.
2DROP, (3DROP ) для удаления лишних параметров( например циклов)

2SWAP - для ротации на стеке двух пар значение+ адрес.

Может у кого более широкое использование этих слов???

Поэтому манипуляции чисел на стеке 2DUP 2SWAP 2OVER 2DROP в любом случае могут быть очень полезны.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июл 16, 2006 21:13 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
вопрос писал(а):
Цитата:
вопрос писал
Необходимы, ну хотя бы действия со снятием с вершины стека и отдельно с неснятием, уже оптимизация будет на 2/3 минимум!

это в операциях ветвления? Или еще где-то?

ЭТО ВЕЗДЕ где приходится одну и ту же переменную DUP DUP DUP , чобы сохранилась для след. действия.

ну вроде
Код:

int a=function();

if(a>2.781) goto label_if_a_g2__781;
else if(a>=1) goto nextlabel1;
else if(a>0) goto nextlabel2;
else if(a==0) goto label_if0;
else ...

a не меняется, но стек движется ...


В примере не форт-код 8) Это раз.
Второе, ну и пускай движется! На то он и стек. На больших процах все должно проваливаться в кеш. При правильно написанной программе стек данных сильно менять свою глубину не будет. А мороки меньше.

Затем. насчет
WingLion писал(а):
А, может, просто определим, что есть VM16 и VM32?

тоже думаю не стоит, так как уже есть и 12 и 16 и 20 и 21 и 32 и 64 битные форт-процессоры, а ведь могут быть и 256 битные( почему бы и нет?) не стоит предусматривать все варианты. Пусть лучше меняется набор слов для работы с памятью - не более того.

А вот тот факт, что размер адресной ссылки и размер данных может быть различен очень даже стоит.


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
oleg писал(а):
вопрос писал(а):
Цитата:
вопрос писал
Необходимы, ну хотя бы действия со снятием с вершины стека и отдельно с неснятием, уже оптимизация будет на 2/3 минимум!

это в операциях ветвления? Или еще где-то?

ЭТО ВЕЗДЕ где приходится одну и ту же переменную DUP DUP DUP , чобы сохранилась для след. действия.

ну вроде
Код:

int a=function();

if(a>2.781) goto label_if_a_g2__781;
else if(a>=1) goto nextlabel1;
else if(a>0) goto nextlabel2;
else if(a==0) goto label_if0;
else ...

a не меняется, но стек движется ...


В примере не форт-код 8) Это раз.
Второе, ну и пускай движется! На то он и стек. На больших процах все должно проваливаться в кеш. При правильно написанной программе стек данных сильно менять свою глубину не будет. А мороки меньше.


ЕСЛИ ДОЛЖЕН БЫТЬ только ФОРТ-код, то ... чем не подошел сишный?

Поясняю детально:
предположим, у Вас есть сложный алгоритм, где с одной и той же переменной (или её близкими производными приходится делать не одно, а несколько действий ...
В ФОРТЕ придётся выполнять доп. действия = дублировать переменную (даже, может - заносить её в стек ...)
В АССЕМБЛЕРЕ или там GCC не будет лишних push


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

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
Возник интересный Вопрос:
как понимать слово, например 2>R если разрядность
стека данных меньше разрядности стека возвратов?
Какие могут быть при этом решения.

P.S. Этот вопрос возник при рассмотрении системы
команд 4-х битного форт контроллера MARC4 ( от Аtmel)
Еще в нем увидел комаду чтения данных из области программы.
TABLE ( -- n )
( r: ret_pc adr_rom -- )
PC:= ret_pc


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

Зарегистрирован: Чт май 04, 2006 22:43
Сообщения: 78
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
вопрос писал(а):
предположим, у Вас есть сложный алгоритм, где с одной и той же переменной (или её близкими производными приходится делать не одно, а несколько действий ...

В Форте слова должны поглощать свои аргументы. Точка. Несколько лишних dupов на производительности не скажутся. А если скажутся - участок кода переписывается на ассемблере.
А главное, никакие алгоритмы не переписывать с Си дословно.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 17, 2006 11:30 
вопрос писал(а):
предположим, у Вас есть сложный алгоритм, где с одной и той же переменной (или её близкими производными приходится делать не одно, а несколько действий ...

Для этого, как допустимое решение, можно применять именованные локальные переменные
из стандарта 94 или в де факто форт системах.:)


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 17, 2006 21:11 
Не в сети
Moderator
Moderator
Аватара пользователя

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


" хадыл недавна в заапарк, удав видел. Хвост В-ООООООООО голова в0. Нэнавижю!!! "

единственное оправдание для использования локальных переменных- это вызов страшных виндошных функций!


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

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


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

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


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

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