Редактирование: PICK
Перейти к навигации
Перейти к поиску
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
'''PICK''' (взять, читается «пик») — стандартное слово [[Каллисто]]. Продублировать u-ное сверху значение. | '''PICK''' (взять, читается «пик») — стандартное слово [[Каллисто]]. Продублировать u-ное сверху значение. | ||
PICK ( xu ... x1 x0 u -- xu ... x1 x0 xu ) Дублировать u-ное сверху. | PICK ( xu ... x1 x0 u -- xu ... x1 x0 xu ) Дублировать u-ное сверху. | ||
Удаляет u. Копирует элемент [[Стек данных|стека]] с номером u (считая от нуля, само число u при этом не считается) и записывает его наверх [[Стек данных|стека]]. | Удаляет u. Копирует элемент [[Стек данных|стека]] с номером u (считая от нуля, само число u при этом не считается) и записывает его наверх [[Стек данных|стека]]. | ||
Строка 6: | Строка 5: | ||
== Ввод слова PICK == | == Ввод слова PICK == | ||
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите четыре клавиши [[Клавиша 6|{{Серая клавиша|6}}]] [[Клавиша 7|{{Серая клавиша|7}}]] [[Клавиша С/П|{{Чёрная клавиша|С/П}}]] [[Клавиша 9|{{Серая клавиша|9}}]] | В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите четыре клавиши [[Клавиша 6|{{Серая клавиша|6}}]] [[Клавиша 7|{{Серая клавиша|7}}]] [[Клавиша С/П|{{Чёрная клавиша|С/П}}]] [[Клавиша 9|{{Серая клавиша|9}}]] | ||
== Детали реализации == | |||
Верхний элемент стека имеет номер нуль, так что 0 PICK равносильно [[Слово ↑|↑]], а 1 PICK равносильно [[OVER]]. | |||
== PICK в стандарте ANS Forth == | == PICK в стандарте ANS Forth == | ||
6.2.2030 PICK CORE EXT | 6.2.2030 PICK CORE EXT | ||
( xu ... x1 x0 u -- xu ... x1 x0 xu ) | ( xu ... x1 x0 u -- xu ... x1 x0 xu ) | ||
Строка 16: | Строка 17: | ||
A.6.2.2030 PICK | A.6.2.2030 PICK | ||
0 PICK эквивалентно DUP, и 1 PICK эквивалентно OVER. | 0 PICK эквивалентно DUP, и 1 PICK эквивалентно OVER. | ||
== PICK в предыдущем стандарте Forth-83 (англ.) == | |||
PICK +n -- 16b 83 | PICK +n -- 16b 83 | ||
16b is a copy of the +nth stack value, not counting +n | 16b is a copy of the +nth stack value, not counting +n | ||
Строка 30: | Строка 25: | ||
1 PICK is equivalent to OVER | 1 PICK is equivalent to OVER | ||
== PICK в стандарте Forth-79 (англ.) == | |||
PICK n1 -- n2 240 | PICK n1 -- n2 240 | ||
Return the contents of the n1-th stack value, not counting n1 | Return the contents of the n1-th stack value, not counting n1 | ||
Строка 36: | Строка 31: | ||
2 PICK is equivalent to OVER. {1..n} | 2 PICK is equivalent to OVER. {1..n} | ||
== | == История == | ||
В Форте-83 действие слова PICK подверглось кардинальному изменению. | |||
В [[Каллисто]] слово PICK совместимо с версией Форта-83 и последующими. В программах, написанных для Форта-79 и более ранних версий, слово PICK надо заменять на последовательность 1− PICK | |||
== | == Реализация == | ||
Слово PICK в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение: | Слово PICK в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение: | ||
<PRE> | <PRE> | ||
Строка 75: | Строка 48: | ||
RW2 PULL, RW2 RW2 AR, ERCONDB BM, | RW2 PULL, RW2 RW2 AR, ERCONDB BM, | ||
RW1 2 (, RW2 RSTACK LH, PUTRW1 B, END-CODE | RW1 2 (, RW2 RSTACK LH, PUTRW1 B, END-CODE | ||
</PRE> | </PRE> | ||
== Ссылки == | == Ссылки == | ||
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.2.2030 PICK] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.2.2030 комментарий к нему] в стандарте ANS Forth ''(англ.)'' | * Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.2.2030 PICK] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.2.2030 комментарий к нему] в стандарте ANS Forth ''(англ.)'' | ||
* Слово [http:// | * Слово [http://www.forth200x.org/documents/html3/core/PICK.html PICK] и [http://www.forth200x.org/documents/html3/rationale.html#rat:core:PICK комментарий к нему] в черновике Forth 200x ''(англ.)'' | ||
{{нет иллюстраций}} | |||
{{заготовка}} | {{заготовка}} | ||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
[[Категория:Примитивы]] | [[Категория:Примитивы]] | ||
[[Категория:Стековые манипуляции Каллисто]] | [[Категория:Стековые манипуляции Каллисто]] | ||
[[Категория: | [[Категория:Описание бета-версии Каллисто]] | ||