−TRAILING: различия между версиями
AtH (обсуждение | вклад) (→Ссылки) |
AtH (обсуждение | вклад) |
||
(не показаны 32 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
'''−TRAILING''' — стандартное слово [[Каллисто]]. | '''−TRAILING''' — стандартное слово [[Каллисто]]. Определить длину строки без завершающих [[пробел]]ов. | ||
−TRAILING ( a u1 −− a u2 ) Отсечь конечные пробелы. | |||
Команда ADR N −TRAILING сокращает значение N на число [[пробел]]ов между последним значащим символом и адресом ADR+N. Этот оператор может использоваться перед [[TYPE]] и особенно полезен при печати на старых принтерах, так как исключает холостые пробеги каретки. | |||
== Ввод слова −TRAILING == | |||
В [[Режим NUM|режиме NUM]] последовательно нажмите клавиши [[Клавиша -|{{Серая клавиша|−}}]] [[Клавиша Р-ГРД-Г|{{Чёрная клавиша|Р-ГРД-Г}}]] [[Клавиша 2|{{Серая клавиша|2}}]] [[Клавиша ×|{{Серая клавиша|×}}]] {{ШГ←}} [[Клавиша 7|{{Серая клавиша|7}}]] [[Клавиша -|{{Серая клавиша|−}}]] [[Клавиша 7|{{Серая клавиша|7}}]] [[Клавиша 4|{{Серая клавиша|4}}]] [[Клавиша БП|{{Чёрная клавиша|БП}}]] | |||
Для возврата в [[режим NUM]] нажмите [[Клавиша P|синюю клавишу {{Синяя клавиша|P}}]]. | |||
== −TRAILING в стандарте ANS Forth == | |||
17.6.1.0170 -TRAILING "dash-trailing" STRING | |||
( c-addr u1 -- c-addr u2 ) | |||
Если u1 больше чем нуль, u2 равно u1 минус число пробелов в конце | |||
символьной строки, определенной c-addr u1. Если u1 нуль или вся | |||
строка состоит из пробелов, u2 нулевой. | |||
== История == | |||
Слово −TRAILING взято в [[Каллисто]] из Форта, в котором входит во все стандарты, включая fig-Форт, и не менялось с 1979 года. Это классическое слово, во многом определяющее образ мышления программистов на Форте. | |||
В Форте FSP88 и FORTH ИТЭФ это слово было известно под именем -TRAIL | |||
=== −TRAILING в предыдущем стандарте Forth-83 (англ.) === | |||
-TRAILING addr +n1 -- addr +n2 79 "dash-trailing" | |||
The character count +n1 of a text string beginning at addr | |||
is adjusted to exclude trailing spaces. If +n1 is zero, | |||
then +n2 is also zero. If the entire string consists of | |||
spaces, then +n2 is zero. | |||
=== −TRAILING в стандарте Forth-79 (англ.) === | |||
-TRAILING addr n1 -- addr n2 148 "dash-trailing" | |||
Adjust the character count n1 of a text string beginning at | |||
addr to exclude trailing blanks, i.e., the characters at | |||
addr+n2 to addr+n1-1 are blanks. An error condition exists if | |||
n1 is negative. | |||
=== −TRAILING в fig-FORTH Release 1 glossary, май 1979 (англ.) === | |||
-TRAILING addr n1 --- addr n2 | |||
Adjusts the character count n1 of a text string beginning address to | |||
suppress the output of trailing blanks. i.e. the characters at | |||
addr+n1 to addr+n2 are blanks. | |||
== Реализация == | |||
<pre> | |||
2386 ;#MinusTRAILING | |||
2387 ; −TRAILING ( a U1 −− a U2 ) Отсечь конечные пробелы. | |||
2388 ; Преобразует число литер U1 в строке, начинающейся с адреса a, в число U2, не включающее | |||
2389 ; число пробелов, которые имеются в конце строки. Адрес a остаётся неизменным. | |||
2390 ; Мы считаем, что дело происходит в области данных. | |||
2391 LDTRAI: .DB 9 | |||
2392 .TEXT "−TRAILING" | |||
2393 .DW LDEC | |||
2394 DTRAI: .DW JDTRAI | |||
2395 JDTRAI: RM3 M8 M5 KRM5 | |||
2396 1 EE 4 − KX>=09 | |||
2397 KRM8 M0 +/− KX<09 | |||
2398 − M1 | |||
2399 DTRAI1: KRM1 32 − | |||
2400 FX=0 DTRAI2 | |||
2401 FL0 DTRAI1 | |||
2402 CX M0 | |||
2403 DTRAI2: RM0 KM8 | |||
2404 KGOTO9 | |||
</pre> | |||
Реализация из SP-Forth 4.20: | |||
<pre> | |||
\ ================================================================ | |||
\ Строки | |||
CODE -TRAILING ( c-addr u1 -- c-addr u2 ) \ 94 STRING | |||
\ Если u1 больше нуля, u2 равно u1, уменьшенному на количество пробелов в конце | |||
\ символьной строки, заданной c-addr и u1. Если u1 ноль или вся строка состоит | |||
\ из пробелов, u2 ноль. | |||
OR EAX, EAX | |||
JZ SHORT @@1 | |||
MOV EDX, EDI | |||
MOV EDI, [EBP] | |||
ADD EDI, EAX | |||
LEA EDI, -1 [EDI] | |||
MOV ECX, EAX | |||
A; B0 C, 20 C, \ MOV AL, # 20 | |||
STD | |||
REPZ SCAS BYTE | |||
JZ SHORT @@2 | |||
INC ECX | |||
@@2: MOV EAX, ECX | |||
MOV EDI, EDX | |||
CLD | |||
@@1: RET | |||
END-CODE | |||
</pre> | |||
=== Советская реализация === | |||
Слово −TRAILING в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение: | |||
<PRE> | |||
-TRAILING A,N1->A,N2 ОТСЕЧЬ КОНЕЧНЫЕ ПРОБЕЛЫ 41 | |||
Экран номер 41 | |||
( 31.03.86 -TRAILING ' ['] [COMPILE] LOAD THRU ;S --> ) | |||
CODE -TRAILIN6 ( A,N1- >A,N2) 14 LHRW12 BAL, RW1 RMASK NR, | |||
RW1 RFORTH AR, 0 RW1 LR, RW1 RW2 AR, BEGIN, RW1 0 CR, | |||
1 =F BNH, RW1 0 BCTR, 0 (, RW1 64 CLI, ?NE UNTIL, 0 0 BCTR, | |||
1 =H RW1 0 SR, PUTRW1 В, END-CODE | |||
</PRE> | |||
В FORTH ИТЭФ слово −TRAILING называлось −TRAIL и также было [[примитив]]ом. Вот его определение: | |||
<PRE> | |||
HEAD 206Q,'-TRAI',314Q,DTRAI ; -TRAIL | |||
POP CX | |||
POP BX | |||
PUSH BX | |||
ADD BX, CX | |||
COMPA: DEC BX | |||
CMP BYTE PTR [BX], 32 ; BLANK ? | |||
JNE NO | |||
LOOP COMPA | |||
NO: PUSH CX | |||
NEXT | |||
</PRE> | |||
== Ссылки == | == Ссылки == | ||
* [http://forth.sourceforge.net/standard/dpans/dpans17.htm#17.6.1.0170 | * {{Исходник|MinusTRAILING|−TRAILING}} | ||
* [http:// | * Слово [http://forth.sourceforge.net/standard/dpans/dpans17.htm#17.6.1.0170 −TRAILING (dash-trailing)] в стандарте ANS Forth ''(англ.)'' | ||
* Слово [http://forth-standard.org/standard/string/MinusTRAILING −TRAILING (dash-trailing)] в черновике Forth 200x ''(англ.)'' | |||
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\10.WWOD-WYWOD ВВОД-ВЫВОД] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»] | |||
* [http://www.forth.com/starting-forth/sf10/sf10.html I/O and You] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)'' | |||
Строка 9: | Строка 129: | ||
{{заготовка}} | {{заготовка}} | ||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
[[Категория:Примитивы]] | |||
[[Категория:Работа с памятью Каллисто]] | |||
[[Категория:Стандартные слова]] | |||
[[Категория:1994 STRING]] | |||
[[Категория:2012 STRING]] |
Текущая версия от 17:09, 10 ноября 2017
−TRAILING — стандартное слово Каллисто. Определить длину строки без завершающих пробелов.
−TRAILING ( a u1 −− a u2 ) Отсечь конечные пробелы.
Команда ADR N −TRAILING сокращает значение N на число пробелов между последним значащим символом и адресом ADR+N. Этот оператор может использоваться перед TYPE и особенно полезен при печати на старых принтерах, так как исключает холостые пробеги каретки.
Ввод слова −TRAILING[править]
В режиме NUM последовательно нажмите клавиши − Р-ГРД-Г 2 × ШГ← 7 − 7 4 БП
Для возврата в режим NUM нажмите синюю клавишу P .
−TRAILING в стандарте ANS Forth[править]
17.6.1.0170 -TRAILING "dash-trailing" STRING ( c-addr u1 -- c-addr u2 ) Если u1 больше чем нуль, u2 равно u1 минус число пробелов в конце символьной строки, определенной c-addr u1. Если u1 нуль или вся строка состоит из пробелов, u2 нулевой.
История[править]
Слово −TRAILING взято в Каллисто из Форта, в котором входит во все стандарты, включая fig-Форт, и не менялось с 1979 года. Это классическое слово, во многом определяющее образ мышления программистов на Форте.
В Форте FSP88 и FORTH ИТЭФ это слово было известно под именем -TRAIL
−TRAILING в предыдущем стандарте Forth-83 (англ.)[править]
-TRAILING addr +n1 -- addr +n2 79 "dash-trailing" The character count +n1 of a text string beginning at addr is adjusted to exclude trailing spaces. If +n1 is zero, then +n2 is also zero. If the entire string consists of spaces, then +n2 is zero.
−TRAILING в стандарте Forth-79 (англ.)[править]
-TRAILING addr n1 -- addr n2 148 "dash-trailing" Adjust the character count n1 of a text string beginning at addr to exclude trailing blanks, i.e., the characters at addr+n2 to addr+n1-1 are blanks. An error condition exists if n1 is negative.
−TRAILING в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]
-TRAILING addr n1 --- addr n2 Adjusts the character count n1 of a text string beginning address to suppress the output of trailing blanks. i.e. the characters at addr+n1 to addr+n2 are blanks.
Реализация[править]
2386 ;#MinusTRAILING 2387 ; −TRAILING ( a U1 −− a U2 ) Отсечь конечные пробелы. 2388 ; Преобразует число литер U1 в строке, начинающейся с адреса a, в число U2, не включающее 2389 ; число пробелов, которые имеются в конце строки. Адрес a остаётся неизменным. 2390 ; Мы считаем, что дело происходит в области данных. 2391 LDTRAI: .DB 9 2392 .TEXT "−TRAILING" 2393 .DW LDEC 2394 DTRAI: .DW JDTRAI 2395 JDTRAI: RM3 M8 M5 KRM5 2396 1 EE 4 − KX>=09 2397 KRM8 M0 +/− KX<09 2398 − M1 2399 DTRAI1: KRM1 32 − 2400 FX=0 DTRAI2 2401 FL0 DTRAI1 2402 CX M0 2403 DTRAI2: RM0 KM8 2404 KGOTO9
Реализация из SP-Forth 4.20:
\ ================================================================ \ Строки CODE -TRAILING ( c-addr u1 -- c-addr u2 ) \ 94 STRING \ Если u1 больше нуля, u2 равно u1, уменьшенному на количество пробелов в конце \ символьной строки, заданной c-addr и u1. Если u1 ноль или вся строка состоит \ из пробелов, u2 ноль. OR EAX, EAX JZ SHORT @@1 MOV EDX, EDI MOV EDI, [EBP] ADD EDI, EAX LEA EDI, -1 [EDI] MOV ECX, EAX A; B0 C, 20 C, \ MOV AL, # 20 STD REPZ SCAS BYTE JZ SHORT @@2 INC ECX @@2: MOV EAX, ECX MOV EDI, EDX CLD @@1: RET END-CODE
Советская реализация[править]
Слово −TRAILING в ФОРТ-ЕС было примитивом. Вот его описание и определение:
-TRAILING A,N1->A,N2 ОТСЕЧЬ КОНЕЧНЫЕ ПРОБЕЛЫ 41 Экран номер 41 ( 31.03.86 -TRAILING ' ['] [COMPILE] LOAD THRU ;S --> ) CODE -TRAILIN6 ( A,N1- >A,N2) 14 LHRW12 BAL, RW1 RMASK NR, RW1 RFORTH AR, 0 RW1 LR, RW1 RW2 AR, BEGIN, RW1 0 CR, 1 =F BNH, RW1 0 BCTR, 0 (, RW1 64 CLI, ?NE UNTIL, 0 0 BCTR, 1 =H RW1 0 SR, PUTRW1 В, END-CODE
В FORTH ИТЭФ слово −TRAILING называлось −TRAIL и также было примитивом. Вот его определение:
HEAD 206Q,'-TRAI',314Q,DTRAI ; -TRAIL POP CX POP BX PUSH BX ADD BX, CX COMPA: DEC BX CMP BYTE PTR [BX], 32 ; BLANK ? JNE NO LOOP COMPA NO: PUSH CX NEXT
Ссылки[править]
- Исходный текст слова −TRAILING в Каллисто Классик 1.0
- Слово −TRAILING (dash-trailing) в стандарте ANS Forth (англ.)
- Слово −TRAILING (dash-trailing) в черновике Forth 200x (англ.)
- ВВОД-ВЫВОД в книге Л.Броуди «Начальный курс программирования на языке Форт»
- I/O and You в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |