Как я могу остановить немедленный вывод значений в Forth?

Используя SwiftForth, я в настоящее время изучаю методы измерения времени, которое требуется для того, чтобы слово быть казненным. Я использую слова «счетчик», а затем «таймер» в форме:

counter insert_word_here timer

Это немедленно выводит время в микросекундах, которое требуется для запуска слова. Есть ли способ предотвратить немедленный вывод этого целого числа, чтобы я мог сохранить его в стеке?


person doraymefaso    schedule 22.10.2020    source источник
comment
Это похоже на системную особенность. Какую систему Forth вы используете?   -  person ruvim    schedule 22.10.2020
comment
Он использовал SwiftForth   -  person doraymefaso    schedule 23.10.2020


Ответы (1)


timer в SwiftForth реализовано примерно так

: timer  \ t0 -- ;
  counter swap - u.
;

Просто определите слово без u., и прошедшее время в миллисекундах останется в стеке.

: timer-ms \ t0 -- t-elapsed
  counter swap -
;

У меня нет SwiftForth, но таймер был определен в качестве примера на странице, которую я нашел. Я думаю, что это должно работать, но я не могу проверить это.

person Tls Chris    schedule 23.10.2020
comment
На самом деле в копии SwiftForth, которая у меня есть, часть timer-ms в вашем коде, как мне кажется, уже существует и называется (TIMER). - person Veltas; 21.11.2020