Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Сб окт 20, 2018 16:35

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 255 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 17  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 12, 2007 00:30 
Не в сети

Зарегистрирован: Вс дек 02, 2007 17:31
Сообщения: 442
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Хищник писал(а):
А это это ж ужас какой-то! И так память - проблемный элемент в плане производительности, а тут ей еще тормоза добавляются.
Ага. А вот если добавить на том же уровне что и DS реализован, то будет быстрее чем с одним DS, если речь идет о прямой компиляции в х86 и исполнении на суперскалярном проце.
А этот пример в ответ на:
K`[f писал(а):
Цитата:
Использование паралельного стека адресов как предлагает Лёха может это дать, поскольку скомпилированный текст будет содержать большее количество независимых комманд которые могут выполняться паралельно. И это гут! Very Happy
Вот честно сказать - глубокое имхо - для мейнстрима, в который я хотел бы вернуть Форт, разница в производительности программы - дело вообще десятое. если не двадцатое. А вот в производительности программиста...
Ну вот, раз скорость дело двадцатое... Зато за 5 минут создается. :))

_________________
Am I evil? I'm man - yes I am! © James Hatefield


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6417
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
Forthware писал(а):
Ага. А вот если добавить на том же уровне что и DS реализован, то будет быстрее чем с одним DS, если речь идет о прямой компиляции в х86 и исполнении на суперскалярном проце.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 12, 2007 08:55 
Был вопрос какие системы уровня CAD созданы на форте.

Из доступных.
В качестве примера можно привести ForthCAD - систему проектирования кухней.
Насколько там Форт доступен неизвестно, т.к. ею не пользовался
( ибо денег просят за нее ). В русском i-nete одна из московских фирм
её использует.

P.S. Но возможно неправ и Форта там немного.
Есть еще русская разработка САПР "Cударушка".:)


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 12, 2007 13:40 
Не в сети

Зарегистрирован: Чт окт 25, 2007 08:01
Сообщения: 154
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Forthware писал(а):
И это все? Держи:


Думаю, для тестов проканает... Попробуем на этом что-нибудь переписать?
Кстати - HERE и иже с ним должны работать с этим же стеком!

Хищник писал(а):
Если превращение данных в адрес будет происходить путем физического перемещения чисел...


Адреса и так СРАЗУ должны лежать на стеке адресов. Иначе смысла в затее нет. И действительно - это попытка альтернативного способа контроля типов, без проверок.

Forthware писал(а):
Ага. А я имел ввиду что ничего реализововать не нужно, оно всегда было есть и будет в Форте. Хотите вы этого или нет. Smile


Ну если рассматривать всякую "виртуальность" то и в C++ есть всё - просто не реализовано. :)

Forthware писал(а):
Не менять надо, а развивать. Когда С исчерпал свой потенциал, даже Страуструп ничего в нем не изменил, а добавил.


И получилось у него криво... Просто плюсы оказались в нужное время в нужном месте. Сейчас происходит очередной виток развития - народ переходит на managed-языки.

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


Во! Можно услышать подробности? В плане вашей практики - что нравится, что не нравится, какие может проблемы вылезли...

Гость писал(а):
P.S. Но возможно неправ и Форта там немного.
Есть еще русская разработка САПР "Cударушка".Smile


Однако - думаю ни тот ни другой ОДНИМ человеком не создавались. :)


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

Зарегистрирован: Вс дек 02, 2007 17:31
Сообщения: 442
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Хищник писал(а):
Кстати, сколько времени уже пользуюсь форт-процессором с "линейным" стеком данных. То есть без всяких выделенных регистров "специально для адреса", без специального кэширования вершины. Очень даже недурственно получается. Стеки возвратов и циклов отдельные (и аппаратные).
Искренне завидую. :oops:
А что за железка (сорри если ответ уже где то был :shuffle;)?
Однако это не имеет особого отношения к компиляции под х86, который аппаратного стека не имеет (кроме FS и частично RS), зато имеет регистры, да и еще суперскалярный в отличии от вашего (или я ошибаюсь :?).

K`[f писал(а):
Думаю, для тестов проканает... Попробуем на этом что-нибудь переписать?
Издеваешься? :shock: :)) Хотя, можешь пробовать если тормозаааааа не смущають. ;)
K`[f писал(а):
Кстати - HERE и иже с ним должны работать с этим же стеком!

Продолжаю прикалываться:
Код:
: HERE ( as: -- a ) HERE >A ;

Аналогичным образом переделываем "и иже с ними". :lol: Приблизительно, 30 секунд на переделку одного слова. С некоторыми (например литералами) может быть посложнее но не более 5 минут. В результате, на перебор всего ANSI словаря завязанного на адреса уйдет день-два работы не слишком опытного фортера. :twisted:
K`[f писал(а):
Ну если рассматривать всякую "виртуальность" то и в C++ есть всё - просто не реализовано.
Да ну! А как в С можно оставлять значения в стеке между выражениями? Или сделать так чтобы функции возвращали в стеке не одно, а несколько значений (только не массивом и не обьектом ;) )? Причем именно в С/С++ а не в другом компиляторе написанном на С. :twisted: Заметьте, я не говорил о расширении Форта, для этого вообще не надо ни одного нового слова создавать, и это верно для любой существующей реализации! Это просто такой стиль программирования. Для Форта он доступен, больше того, его невозможно сделать недоступным. А вот в С++ обычный Фортовый стиль сделать доступным нельзя по определению, поскольку синтаксис такого стиля не допускает (синтаксис Форта, например ANSI допускает работу с переменными с целью обнуления стека в конце каждой строки, а также не запрещает создавать сколь угодно длинные определения :P ).
K`[f писал(а):
И получилось у него криво...
Ну, как говорится на любителя. Мне тоже не нравится, а вот некоторым... :shuffle; Да и сам С вообще то не образец элегантности. :roll: :lol:

_________________
Am I evil? I'm man - yes I am! © James Hatefield


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

Зарегистрирован: Чт окт 25, 2007 08:01
Сообщения: 154
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Forthware писал(а):
здеваешься? Shocked Looool Хотя, можешь пробовать если тормозаааааа не смущають. Wink


Не смущают. Всё равно то, что получится, работать не будет. Тут главное оценить размеры/скорость написания/читабельность и т.п. Есть предложения?

Forthware писал(а):
Да ну! А как в С можно оставлять значения в стеке между выражениями? Или сделать так чтобы функции возвращали в стеке не одно, а несколько значений (только не массивом и не обьектом Wink )? Причем именно в С/С++ а не в другом компиляторе написанном на С.


Да вашим же способом - растекаясь мыслию на древе и придумывая то, "чего можно было бы реализовать". :)


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

Зарегистрирован: Вс дек 02, 2007 17:31
Сообщения: 442
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
K`[f писал(а):
Не смущают. Всё равно то, что получится, работать не будет. Тут главное оценить размеры/скорость написания/читабельность и т.п. Есть предложения?
Ну, провокатор... Держи! :twisted:
Код:
VARIABLE as 1000 ALLOT HERE CELL- CONSTANT amax as CELL+ DUP CONSTANT amin as !
: A0 ( xa -- ) amin as ! ;
: >A ( a -- ) ( as: -- a ) as @ CELL+ amax MIN DUP as ! ! ;
: A> ( -- a ) ( as: a -- ) as @ DUP @ SWAP CELL- amin MAX as ! ;
: A? ( -- a ) ( as: a -- a ) as @ @ ;
: I>A ( as: -- a ) I >A ;
: J>A ( as: -- a ) J >A ;
: A@ ( as: a -- a ) A> @ >A ;
: A! ( as: a a -- ) A> A> SWAP ! ;
: A+ ( as: a1 a2 -- a1+a2 ) A> A> + >A ;
: A- ( as: a1 a2 -- a1-a2 ) A> A> SWAP - >A ;
: ADUP ( as: a -- a a ) A> DUP >A >A ;
: ADROP ( as: a -- ) A> DROP ;
: +A ( n -- ) ( as: a -- a+n ) A> + >A ;
: -A ( n -- ) ( as: a -- a-n ) A> SWAP - >A ;
: A1+ ( as: a -- a+1 ) 1 +A ;
: A1- ( as: a -- a-1 ) 1 -A ;
: ACHAR+ ( as: a -- a+char ) 1 CHARS +A ;
: ACHAR- ( as: a -- a-char ) 1 CHARS -A ;
: ACELL+ ( as: a -- a+cell ) 1 CELLS +A ;
: ACELL- ( as: a -- a-cell ) 1 CELLS -A ;
: A, ( as: a -- ) A> , ;
: ALITERAL ( compilation as: a -- )( runtime as: -- a ) A> [COMPILE] LITERAL POSTPONE >A ; IMMEDIATE
: AMAX ( as: a1 a2 --  a1 | a2 ) A> A> MAX >A ;
: AMIN ( as: a1 a2 --  a1 | a2 ) A> A> MIN >A ;

\ ------------------------------------------------
: S" ( "comp: "ccc<quote>" -- ) ( rt ds: -- u; as: -- a )
[COMPILE] S"
STATE @
IF
  POSTPONE SWAP POSTPONE >A
ELSE
  SWAP >A
THEN
; IMMEDIATE
: C" ( "comp: "ccc<quote>" -- ) ( rt as: -- a )
[COMPILE] C"
STATE @
IF
  POSTPONE >A
ELSE
  >A
THEN
; IMMEDIATE
: #> ( xd -- u ) ( as: -- a ) #> SWAP >A ;
: ' ( as: "<spaces>name" -- xt ) ' >A ;
: ['] ( ex as: -- xt ) [COMPILE] ['] POSTPONE >A ; IMMEDIATE
: +! ( n|u -- ) ( as: a -- ) A> +! ;
: 2! ( x1 x2 -- ) ( as: a -- ) A> 2! ;
: 2@ ( -- x1 x2 ) ( as: a -- ) A> 2@ ;
: >BODY ( as: xt -- a ) A> >BODY >A ;
: >IN ( as: -- a ) >IN >A ;
: >NUMBER ( ud1 u1 -- ud2 u2 ) ( as: a1 -- a2 ) A> SWAP >NUMBER SWAP >A ;
: A>R ( as: a -- ) ( rs: -- a ) A> >R ;
: R>A ( as: -- a ) ( rs: a -- ) R> >A ;
: ACCEPT ( +n1 -- +n2 ) ( as: a -- ) A> SWAP ACCEPT ;
: ALIGNED ( as: a -- a ) A> ALIGNED >A ;
: BASE ( as: -- a ) BASE >A ;
: C! ( c -- ) ( as: a -- ) A> C! ;
: C@ ( -- c ) ( as: a -- ) A> C@ ;
: COUNT ( -- u ) ( as: a -- a ) A> COUNT SWAP >A ;
: ENVIRONMENT? ( u -- false | i*x true ) ( as: a -- ) A> SWAP ENVIRONMENT? ;
: EVALUATE ( i*x u -- j*x ) ( as: a -- ) A> SWAP EVALUATE ;
: EXECUTE ( as: xt -- ) A> EXECUTE ;
: FILL ( u c -- ) ( as: a -- ) A> ROT ROT FILL ;
: FIND ( as: a -- a | xt ) ( -- 0 | 1 | -1 ) A> FIND SWAP >A ;
: HERE ( as: -- a ) HERE >A ;
: MOVE ( u -- ) ( as: a1 a2 -- ) A> A> SWAP ROT MOVE ;
: SOURCE ( -- u ) ( as: -- a ) SOURCE SWAP >A ;
: STATE ( as: -- a ) STATE >A ;
: TYPE ( u -- ) ( as: a -- ) A> SWAP TYPE ;
: WORD ( char "<chars>ccc<char>" -- ) ( as: -- a ) WORD >A ;
: #TIB ( as: -- a ) #TIB >A ;
: :NONAME ( cs:  -- colon-sys ) ( as: -- xt ) :NONAME >A ;
: COMPILE, ( as: xt -- ) A> ['] COMPILE, ; IMMEDIATE
\ : CONVERT ( ud1 -- ud2 ) ( as: a1 -- a2 ) A> CONVERT >A ;
: ERASE ( u -- ) ( as: a -- ) A> SWAP ERASE ;
\ : EXPECT ( +n -- ) ( as: a -- ) A> SWAP EXPECT ;
: PAD ( as: -- a ) PAD >A ;
: PARSE ( char "ccc<char>" -- u ) ( as: -- a ) PARSE SWAP >A ;
\ : SPAN ( as: -- a ) SPAN >A ;
: TIB ( as: -- a ) TIB >A ;
: BLK ( as: --  a ) BLK >A ;
\ : BLOCK ( u -- ) ( as: -- a ) BLOCK >A ;
\ : BUFFER ( u -- ) ( as: -- a ) BUFFER >A ;
\ : SCR ( as: --  a ) SCR >A ;
: CREATE-FILE ( u fam -- fileid ior ) ( as: a -- ) A> ROT ROT CREATE-FILE ;
: DELETE-FILE ( u -- ior ) ( as: a -- ) A> SWAP DELETE-FILE ;
: INCLUDED ( u -- ) ( as: a -- ) A> SWAP INCLUDED ;
: OPEN-FILE ( u fam -- fileid ior ) ( as: a -- ) A> ROT ROT OPEN-FILE ;
: READ-FILE ( u1 fileid -- u2 ior ) ( as: a -- ) A> ROT ROT READ-FILE ;
: READ-LINE ( u1 fileid -- u2 flag ior ) ( as: a -- ) A> ROT ROT READ-LINE ;
: WRITE-FILE ( u fileid -- ior ) ( as: a -- ) A> ROT ROT WRITE-FILE ;
: WRITE-LINE ( u fileid -- ior ) ( as: a -- ) A> ROT ROT WRITE-LINE ;
\ : FILE-STATUS ( u -- x ior ) ( as: a -- ) A> SWAP FILE-STATUS ;
\ : RENAME-FILE ( u1 u2 -- ior ) ( as: a1 a2 -- ) A> SWAP ROT A> SWAP 2SWAP RENAME-FILE ;
: ALLOCATE ( u -- ior ) ( as: -- a ) ALLOCATE SWAP >A ;
: FREE ( -- ior ) ( as: a -- ) A> FREE ;
: RESIZE ( u -- ior ) ( as: a -- a ) A> SWAP RESIZE SWAP >A ;
\ : ? ( as: a -- ) A> ? ;
: DUMP ( u -- ) ( as: a -- ) A> SWAP DUMP ;
: SEARCH-WORDLIST ( u wid -- 0 | xt 1 | xt -1 ) ( as: a -- ) A> ROT ROT SEARCH-WORDLIST ;
: -TRAILING ( u1 -- u2 ) ( as: a1 -- a2 ) A> SWAP -TRAILING SWAP >A ;
\ : /STRING ( u1 n -- u2 ) ( as: a1 -- a2 ) A> ROT ROT /STRING SWAP >A ;
\ : BLANK ( u -- ) ( as: a -- ) A> SWAP BLANK ;
: CMOVE ( u -- ) ( as: a1 a2 -- ) A> A> SWAP ROT CMOVE ;
: CMOVE> ( u -- ) ( as: a1 a2 -- ) A> A> SWAP ROT CMOVE> ;
: COMPARE ( u1 u2 -- n ) ( as: a1 a2 -- ) A> SWAP ROT A> SWAP 2SWAP COMPARE ;
: SEARCH ( u1 u2 -- u3 flag ) ( as: a1 a2 -- a3 ) A> SWAP ROT A> SWAP 2SWAP SEARCH ROT >A ;
\ : >FLOAT ( u -- true | false ) ( as: a -- ) A> SWAP >FLOAT ;
: DF! ( as: a -- ) ( fs: df -- ) A> DF! ;
: DF@ ( as: a -- ) ( fs: -- df ) A> DF@ ;
\ : DFALIGNED ( as: a1 -- a2 ) A> DFALIGNED >A ;
\ : DFLOAT+ ( as: a1 -- a2 ) A> DFLOAT+ >A ;
: F! ( as: a -- ) ( fs: f -- ) A> F! ;
: F@ ( as: a -- ) ( fs: -- f ) A> F@ ;
\ : FALIGNED ( as: a1 -- a2 ) A> FALIGNED >A ;
\ : AFLOAT+ ( as: a1 -- a2 )  A> FLOAT+ >A ;
\ : REPRESENT ( u -- n flag1 flag2 ) ( as: a -- ) A> SWAP REPRESENT ;
: SF! ( as: a -- ) ( fs: f -- ) A> SF! ;
: SF@ ( as: a -- ) ( fs: -- f ) A> SF@ ;
\ : SFALIGNED ( as: a1 -- a2 ) A> SFALIGNED >A ;
\ : ASFLOAT+ ( as: a1 -- a2 ) A> ASFLOAT+ >A ;
: SLITERAL ( compilation ds: u -- ; as: a -- )( runtime ds: -- u ; as: -- a )
A> [COMPILE] LITERAL POSTPONE >A [COMPILE] LITERAL ; IMMEDIATE
: VARIABLE ( execution as: -- a ) CREATE 0 , DOES> >A ;
: 2VARIABLE ( execution as: -- a ) CREATE 0 , 0 , DOES> >A ;
\ : FVARIABLE ( execution as: -- a ) CREATE 1 FLOATS ALLOT DOES> >A ;
: DOES> POSTPONE DOES> POSTPONE >A ; IMMEDIATE
: CREATE CREATE DOES> ;
: ! ( n -- ) ( as: a -- ) A> ! ;
: @ ( -- n ) ( as: a -- ) A> @ ;

Эта фигня полностью соответствует ANSI, и переводит все слова ANSI работающие с адресами на использование AS.
Могут быть ошибки, уж извеняй, тестировать влом. :lol:
ЗЫ А я ошибался, на все пошло около 3-х часов. :twisted:


Последний раз редактировалось Forthware Сб дек 15, 2007 14:05, всего редактировалось 5 раз(а).

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

Зарегистрирован: Чт окт 25, 2007 08:01
Сообщения: 154
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Forthware писал(а):
Ну, провокатор... Держи! Twisted Evil



Во блин... Я спрашивал вообще-то есть ли идеи, что можно переписать, чтобы сравнить реализации. :)


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

Зарегистрирован: Вс дек 02, 2007 17:31
Сообщения: 442
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
K`[f писал(а):
Во блин... Я спрашивал вообще-то есть ли идеи, что можно переписать, чтобы сравнить реализации.
Надоело философствовать. Вот тебе то, что по твоему достаточно для оценки идеи. Теперь можешь показать чем оно лучше за один стек. ;)
Что не устраивает?

_________________
Am I evil? I'm man - yes I am! © James Hatefield


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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Forthware писал(а):
Эта фигня полностью соответствует ANSI, и переводит все слова ANSI работающие с адресами на использование AS. Из всего ANSI упущены локальные переменные, и DOES> при выполнении помещает адрес тела в DS.


не хватает еще кое-чего...

: АМИНЬ 1000 0 DO NOP-NOP LOOP ;

и в каждом определении в конце добавить это слово перед ;

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


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

Зарегистрирован: Вс дек 02, 2007 17:31
Сообщения: 442
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
WingLion писал(а):
: АМИНЬ 1000 0 DO NOP-NOP LOOP ; и в каждом определении в конце добавить это слово перед ;
Можно проще!
Код:
: АМИНЬ 1000 0 DO NOP-NOP LOOP ;
: ; POSTPONE АМИНЬ [COMPILE] ; ; IMMEDIATE

:))


Последний раз редактировалось Forthware Ср дек 12, 2007 21:22, всего редактировалось 1 раз.

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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
WingLion писал(а):
Forthware писал(а):
Эта фигня полностью соответствует ANSI, и переводит все слова ANSI работающие с адресами на использование AS. Из всего ANSI упущены локальные переменные, и DOES> при выполнении помещает адрес тела в DS.


не хватает еще кое-чего...

: АМИНЬ 1000 0 DO NOP-NOP LOOP ;

и в каждом определении в конце добавить это слово перед ;

Это намёк, что разница только в лишних тактах?

_________________
понимаю некоторую бестолковость некоторых вопросов


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6417
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
K`[f писал(а):
Во! Можно услышать подробности? В плане вашей практики - что нравится, что не нравится, какие может проблемы вылезли...

Хм... даже не знаю. 5 лет уже пользуюсь им, что такое микроконтроллер - практически забыл :) Есть IDE, базовые слова Форта транслируются напрямую в инструкции процессора (в одну ячейку каждая). Стек возвратов вот был не нужен (в смысле >R R> RDROP). Стек циклов - замечательная вещь, во второй версии процессора его еще не было, в третьей появился. Нравится, что код очень компактный, время выполнения просчитывается даже "глазами по экрану" (потому что каждое слово - одна инструкция). Адресный регистр или специальный стек для адресов ни разу не был нужен, а исходя из структуры кода - даже немного вреден, потому что лишняя сущность.
Forthware писал(а):
Хищник писал(а):
Кстати, сколько времени уже пользуюсь форт-процессором с "линейным" стеком данных. То есть без всяких выделенных регистров "специально для адреса", без специального кэширования вершины. Очень даже недурственно получается. Стеки возвратов и циклов отдельные (и аппаратные).
Искренне завидую.
А что за железка (сорри если ответ уже где то был )?

http://www.msyst.ru/kf_3xx.htm
По сравнению с текстом по ссылке есть косметические улучшения, но там по крайней мере пояснено, что к чему. Стеки, например, увеличены и тотально переведены в распределенную память.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт дек 13, 2007 06:53 
Не в сети

Зарегистрирован: Чт окт 25, 2007 08:01
Сообщения: 154
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Forthware писал(а):
Что не устраивает?


Оно не отвечает на поставленный вопрос. Я спрашивал не как такой затык сделать (я это и сам могу), а на чём, по мнению сообщества, лучше сравнивать результат... Я вот думаю взять что-нибудь из ~ac...?

WingLion писал(а):
и в каждом определении в конце добавить это слово перед ;


Тоже мысля. Можно будет сделать версии для всех основных распространённых религий. И всем буде счастье и наступит мир во всём мире. :)

Хищник писал(а):
Стек циклов - замечательная вещь, во второй версии процессора его еще не было, в третьей появился. Нравится, что код очень компактный, время выполнения просчитывается даже "глазами по экрану" (потому что каждое слово - одна инструкция).


Угу... Вот по этому пункту - насчёт циклов - можно увидеть какой-то наглядный пример?

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


А вот по этому - хотелось бы услышать более развёрнутую аргументацию. Почему вы считаете что это лишняя сущность? У вас очень много разной адресной арифметики?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт дек 13, 2007 11:59 
Не в сети

Зарегистрирован: Вс дек 02, 2007 17:31
Сообщения: 442
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
K`[f писал(а):
Оно не отвечает на поставленный вопрос. Я спрашивал не как такой затык сделать (я это и сам могу), а на чём, по мнению сообщества, лучше сравнивать результат... Я вот думаю взять что-нибудь из ~ac...?
Да, безусловно. Это может сделать любой. Однако вместо того чтобы сначала сделать, а потом говорить, вы почему то уже неоднократно всем обьясняли "на пальцах" как такое счастье должно выглядеть, и как оно полезно. Больше обьяснять не придется, теперь каждый может увидеть сам. В том числе и вы. ;)
А показывать его полезность уже должен тот кто в неё верит. Ждем результатов! :D
Хищник писал(а):
http://www.msyst.ru/kf_3xx.htmПо сравнению с текстом по ссылке есть косметические улучшения, но там по крайней мере пояснено, что к чему. Стеки, например, увеличены и тотально переведены в распределенную память.
Спасибо.

_________________
Am I evil? I'm man - yes I am! © James Hatefield


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

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


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

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


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

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