Слово J: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
м (Арви Хэкер переименовал страницу J (Каллисто) в Слово J)
 
(не показана 21 промежуточная версия этого же участника)
Строка 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
         Интерпретация: Семантика интерпретации для этого слова не определена.
         Интерпретация: Семантика интерпретации для этого слова не определена.
Строка 20: Строка 21:


         : 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
Строка 29: Строка 31:
                       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
Строка 36: Строка 37:
           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://www.forth200x.org/documents/html3/core/J.html J] и [http://www.forth200x.org/documents/html3/rationale.html#rat:core:J комментарий к нему] в черновике Forth 200x ''(англ.)''
* Слово [http://forth-standard.org/standard/core/J J] и [http://forth-standard.org/standard/rationale#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/sf6/sf6.html Throw It For a Loop] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)''




Строка 46: Строка 95:
{{заготовка}}
{{заготовка}}
[[Категория:Слова Каллисто]]
[[Категория:Слова Каллисто]]
[[Категория:Слова Каллисто без стековых диаграмм]]
[[Категория:Примитивы]]
[[Категория:Операции со стеком возвратов Каллисто]]
[[Категория:Стандартные слова]]
[[Категория:1994 CORE]]
[[Категория:2012 CORE]]

Текущая версия от 17:13, 10 ноября 2017

J (внешний счётчик, читается «джэй») — стандартное слово Каллисто.

J              ( −− U )                             Дать текущее значение счётчика внешнего цикла FOR.

Кладёт на стек данных значение счётчика внешнего цикла FORNEXT.

Ввод слова J[править]

В режиме ЛАТ нажмите белую клавишу  8 

J в стандарте ANS Forth[править]

 6.1.1730   J                                                               CORE
        Интерпретация: Семантика интерпретации для этого слова не определена.

        Выполнение:( -- n|u )( R: loop-sys1 loop-sys2 -- loop-sys1 loop-sys2 )
            n|u - копия следующего-внешнего индекса цикла. Неопределенная 
            ситуация существует, если параметры управления цикла следующего-
            внешнего цикла, loop-sys1, недоступны.

 A.6.1.1730   J
 J может только использоваться со вложенными, DO...LOOP, DO...+LOOP, ?DO...LOOP, 
 or ?DO...+LOOP, например, в форме:

        : X ... DO ... DO ... J ... LOOP ... +LOOP ... ;

История[править]

J в предыдущем стандарте Forth-83 (англ.)[править]

         J            -- w                          C,79                 
              w is a copy of the index of the next outer loop.  May only
              be used within a nested DO-LOOP or DO-+LOOP in the form, for
              example:                              
                      DO ... DO ... J ... LOOP ... +LOOP

J в стандарте Forth-79 (англ.)[править]

J              -- n                          C,225
    Return  the index of the next outer loop.   May only  be  used
    within a nested DO-LOOP in the form:
         DO ... DO ... J ... LOOP ... LOOP

Реализация[править]

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

Реализация из SP-Forth 4.20:

\ ================================================================
\ Циклы

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

Советская реализация[править]

Слово J в ФОРТ-ЕС было примитивом. Вот его описание и определение:

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

Ссылки[править]


  У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их.


  Это заготовка статьи. Вы можете помочь проекту, дополнив её.