Слово J: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) Нет описания правки |
AtH (обсуждение | вклад) |
||
(не показано 9 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
'''J''' (внешний счётчик, читается «джэй») — стандартное слово [[Каллисто]]. | '''J''' (внешний счётчик, читается «джэй») — стандартное слово [[Каллисто]]. | ||
J ( −− | J ( −− U ) Дать текущее значение счётчика внешнего цикла FOR. | ||
Кладёт на [[Стек данных|стек данных]] значение счётчика внешнего цикла [[FOR]]…[[NEXT]]. | Кладёт на [[Стек данных|стек данных]] значение счётчика внешнего цикла [[FOR]]…[[NEXT]]. | ||
Строка 38: | Строка 38: | ||
== Реализация == | == Реализация == | ||
<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 в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение: | Слово J в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение: | ||
<PRE> | <PRE> | ||
Строка 52: | Строка 84: | ||
== Ссылки == | == Ссылки == | ||
* {{Исходник|J|J}} | * {{Исходник|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://forth-standard.org/standard/core/J J] и [http://forth-standard.org/standard/rationale#rat:core:J комментарий к нему] в черновике Forth 200x ''(англ.)'' | ||
Строка 63: | Строка 96: | ||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
[[Категория:Примитивы]] | [[Категория:Примитивы]] | ||
[[Категория:Операции со стеком возвратов Каллисто]] | |||
[[Категория:Стандартные слова]] | |||
[[Категория: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 (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |