Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 13:55

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Postscript - подобные конструкции управления
Автор Сообщение
  Заголовок сообщения:  Postscript - подобные конструкции управления  Ответить с цитатой
ну, вот и до постскрипта добрался :)\
имена взяты не оригинальные (из-за колизий) на сколько удачны придуманные мною не знаю.

<pre>
\ 09.05.2009 ~mOleg
\ Сopyright [C] 2009 mOleg mininoleg@yahoo.com
\ Postscript - подобные конструкции управления

\ в зависимости от значения flag выполнить либо xta либо xtb
: IfElse ( flag xta xtb --> ) ROT IF NIP ELSE DROP THEN EXECUTE ;

\ выполнять бесконечное количество раз xt
: infinite ( xt --> ) A>R BEGIN AR@ EXECUTE AGAIN ;

\ выполнять xt указанное количество раз #
: cycle ( # xt --> )
A>R
>R BEGIN R> *WHILE
>L AR@ L> 1 - >R EXECUTE
REPEAT
DROP ARDROP ;

?ABSENT test{ \EOF -- тестовая секция ---------------------------------------
test{ :> sma 3 * ;
2 3 sma cycle 54 <> THROW
:> smb 1 - *IF ;THEN ARDROP ARDROP ;
10 smb infinite THROW

:> smc 123412 ;
:> smd 509485 ;
0 smc smd IfElse smc EXECUTE <> THROW
112 smc smd IfElse smd EXECUTE <> THROW
-1 smc smd IfElse smd EXECUTE <> THROW
}test
</pre>
не сделал только аналог Фортового DO +LOOP , уж больно он муторный (думаю как сделать попроще).
что интересно, cycle усложнен ради переносимости. Учтен вариант, когда адреса и данные имеют разную разрядность, правда без локального стека не обошлось.
Ну, и по большому счтету, все такие конструкции желательно реализовывать на ассемблере, так как они очень сильно завязаны на устройство реальной машины с одной стороны, а с другой должны исполняться как можно быстрее.
Сообщение Добавлено: Вс май 10, 2009 14:00

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


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