Слово J: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) м (Арви Хэкер переименовал страницу J (Каллисто) в Слово J) |
AtH (обсуждение | вклад) |
||
(не показана 21 промежуточная версия этого же участника) | |||
Строка 1: | Строка 1: | ||
'''J''' ( | '''J''' (внешний счётчик, читается «джэй») — стандартное слово [[Каллисто]]. | ||
J ( −− U ) Дать текущее значение счётчика внешнего цикла FOR. | |||
Кладёт на [[Стек данных|стек данных]] значение счётчика внешнего цикла [[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:// | * Слово [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.
Кладёт на стек данных значение счётчика внешнего цикла FOR…NEXT.
Ввод слова 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
Ссылки[править]
- Исходный текст слова J в Каллисто Классик 1.0
- См. слова R@, FOR, NEXT, UNLOOP, LEAVE, I и K
- Слово J и комментарий к нему в стандарте ANS Forth (англ.)
- Слово J и комментарий к нему в черновике Forth 200x (англ.)
- Счётчик цикла в Википедии
- The Philosophy of Fixed Point в книге Leo Brodie Starting Forth (англ.)
- Throw It For a Loop в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |