Редактирование: CREATE

Перейти к навигации Перейти к поиску
Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы войдёте или создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.

Текущая версия Ваш текст
Строка 79: Строка 79:
         parameter field. The new word is created in the CURRENT vocabulary.
         parameter field. The new word is created in the CURRENT vocabulary.


== Реализация ==
== Детали реализации ==
Создающая часть слова CREATE является высокоуровневой. Для ускорения исполнения создаваемых слов исполняющая часть слова CREATE написана на [[ЯМК|языке МК]].
Создающая часть слова CREATE является высокоуровневой. Для ускорения исполнения создаваемых слов исполняющая часть слова CREATE написана на [[ЯМК|языке МК]].
<pre>
<pre>
Строка 105: Строка 105:
3331 SCRE:          RM7 10002 + KM3  KGOTO9        ; Созданные слова размещаются в области двоичных данных
3331 SCRE:          RM7 10002 + KM3  KGOTO9        ; Созданные слова размещаются в области двоичных данных
</pre>
</pre>
Реализации из SP-Forth 4.20:
Реализация из SP-Forth 4.20:
<pre>
0 VALUE CREATE-CODE
CODE _CREATE-CODE
    LEA  EBP, -4 [EBP]
    MOV  [EBP], EAX
    POP EAX
    RET
END-CODE
 
' _CREATE-CODE TO CREATE-CODE
    '  _CREATE-CODE  >VIRT VALUE CREATE-CODE
: SHEADER ( addr u -- )
  HERE 0 , ( cfa )
\  DUP LAST-CFA !
  0 C,    ( flags )
  -ROT WARNING @
  IF 2DUP GET-CURRENT SEARCH-WORDLIST
    IF DROP 2DUP TYPE ."  isn't unique" CR THEN
  THEN
  CURRENT @ +SWORD
  ALIGN
  HERE SWAP ! ( заполнили cfa )
;
 
: HEADER
  PARSE-NAME SHEADER
;
: CREATE ( "<spaces>name" -- ) \ 94
  [T] HEADER [I]
  CREATE-CODE COMPILE,
;
</pre>
<pre>
<pre>
USER LAST-CFA
USER LAST-CFA
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)