Редактирование: Слово J

Перейти к навигации Перейти к поиску
Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы войдёте или создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.

Текущая версия Ваш текст
Строка 1: Строка 1:
'''J''' (внешний счётчик, читается «джэй») — стандартное слово [[Каллисто]].
'''J''' (джэй) — стандартное слово [[Каллисто]].
J              ( −− U )                            Дать текущее значение счётчика внешнего цикла FOR.
 
Кладёт на [[Стек данных|стек данных]] значение счётчика внешнего цикла [[FOR]]…[[NEXT]].
Помещает в [[Стек данных|стек данных]] значение счётчика внешнего цикла [[FOR]]…[[NEXT]].


== Ввод слова J ==
== Ввод слова J ==
Строка 7: Строка 7:


== J в стандарте ANS Forth ==
== J в стандарте ANS Forth ==
<PRE>
  6.1.1730  J                                                              CORE
  6.1.1730  J                                                              CORE
         Интерпретация: Семантика интерпретации для этого слова не определена.
         Интерпретация: Семантика интерпретации для этого слова не определена.
Строка 21: Строка 20:


         : X ... DO ... DO ... J ... LOOP ... +LOOP ... ;
         : X ... DO ... DO ... J ... LOOP ... +LOOP ... ;
</PRE>


== История ==
== J в предыдущем стандарте Forth-83 (англ.) ==
=== J в предыдущем стандарте Forth-83 (англ.) ===
           J            -- w                          C,79                 
           J            -- w                          C,79                 
               w is a copy of the index of the next outer loop.  May only
               w is a copy of the index of the next outer loop.  May only
Строка 31: Строка 28:
                       DO ... DO ... J ... LOOP ... +LOOP
                       DO ... DO ... J ... LOOP ... +LOOP


=== J в стандарте Forth-79 (англ.) ===
== J в стандарте Forth-79 (англ.) ==
  J              -- n                          C,225
  J              -- n                          C,225
     Return  the index of the next outer loop.  May only  be  used
     Return  the index of the next outer loop.  May only  be  used
     within a nested DO-LOOP in the form:
     within a nested DO-LOOP in the form:
           DO ... DO ... J ... LOOP ... LOOP
           DO ... DO ... J ... LOOP ... LOOP
== Реализация ==
<pre>
1835 I0:            MA M5
1836                KRMA RME ∗ KRM5 + KM3  KGOTO9
1837
1838 ;#J
1839 ; J                ( −− U )                            Значение счётчика внешнего цикла FOR.
1840 LJ:            .DB    1
1841                .TEXT  "J"                    ; ( −− n )
1842                .DW    LI
1843 J:              .DW    JJ                      ; Узнать значение переменной цикла из вложенного цикла.
1844 JJ:            4
1845 JJ0:            RM2 + GOTO I0
</pre>
Реализация из SP-Forth 4.20:
<pre>
\ ================================================================
\ Циклы
CODE J  \ 94
\ Интерпретация: семантика неопределена.
\ Выполнение: ( -- n|u ) ( R: loop-sys -- loop-sys )
\ n|u - копия параметра следующего объемлющего цикла.
\ Неоднозначная ситуация возникает, если параметр недоступен.
      LEA EBP, -4 [EBP]
      MOV [EBP], EAX
      MOV EAX, 10 [ESP]
      SUB EAX, 14 [ESP]
      RET
END-CODE
</pre>
=== Советская реализация ===
Слово J в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение:
<PRE>
J      К  ->W TEKУЩEE ЗНАЧЕНИЕ W СЧЕТЧИКА ВТОРОГО              24
            ОБЪЕМЛЮЩЕГО ЦИКЛА "DO"
                    Экран номер 24
( 09.09.86 ЦИКЛЫ СО СЧЕТЧИКОМ: (DO/ I I' J  LEAVE)
CODE J  ( ->U ТЕКУЩЕЕ ЗНАЧЕНИЕ СЧЕТЧИКА 2-ГО ЦИКЛА)
      RW1 RFIRST 6 +(, LH, PUSHRW1 В, END-CODE
</PRE>


== Ссылки ==
== Ссылки ==
* {{Исходник|J|J}}
* См. слова [[R@]], [[FOR]], [[NEXT]], [[UNLOOP]], [[LEAVE]], [[Слово I|I]] и [[Слово K|K]]
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.1730 J] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.1.1730 комментарий к нему] в стандарте ANS Forth ''(англ.)''
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.1730 J] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.1.1730 комментарий к нему] в стандарте ANS Forth ''(англ.)''
* Слово [http://forth-standard.org/standard/core/J J] и [http://forth-standard.org/standard/rationale#rat:core:J комментарий к нему] в черновике Forth 200x ''(англ.)''
* Слово [http://www.forth200x.org/documents/html3/core/J.html J] и [http://www.forth200x.org/documents/html3/rationale.html#rat:core:J комментарий к нему] в черновике Forth 200x ''(англ.)''
* [https://ru.wikipedia.org/wiki/%D0%A1%D1%87%D1%91%D1%82%D1%87%D0%B8%D0%BA_%D1%86%D0%B8%D0%BA%D0%BB%D0%B0 Счётчик цикла в Википедии]
* [https://ru.wikipedia.org/wiki/%D0%A1%D1%87%D1%91%D1%82%D1%87%D0%B8%D0%BA_%D1%86%D0%B8%D0%BA%D0%BB%D0%B0 Счётчик цикла в Википедии]
* [http://www.forth.com/starting-forth/sf5/sf5.html The Philosophy of Fixed Point] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)''
* [http://www.forth.com/starting-forth/sf5/sf5.html The Philosophy of Fixed Point] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)''
Строка 96: Строка 46:
[[Категория:Слова Каллисто]]
[[Категория:Слова Каллисто]]
[[Категория:Примитивы]]
[[Категория:Примитивы]]
[[Категория:Операции со стеком возвратов Каллисто]]
[[Категория:Слова Каллисто без стековых диаграмм]]
[[Категория:Стандартные слова]]
[[Категория:1994 CORE]]
[[Категория:2012 CORE]]
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)