−TRAILING: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
 
(не показаны 33 промежуточные версии этого же участника)
Строка 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 Слово −TRAILING (dash-trailing) в стандарте ANS Forth] ''(англ.)''
* {{Исходник|MinusTRAILING|−TRAILING}}
* [http://www.forth200x.org/documents/html/string.html#string:-TRAILING Слово −TRAILING (dash-trailing) в черновике Forth 200x] (англ.)
* Слово [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

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


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


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