История изменений
Исправление MOPKOBKA, (текущая версия) :
immediate-слова, это просто функции, у которых выставлен один бит, с названием immediate. Когда компилятор встречает такую функцию в коде, он ее не «вставляет» (генерацией call 0x...), а немедленно (immediate) выполняет, после чего продолжает компиляцию.
Пример:
: f1 ." hello1" ; immediate
: f2 ." hello2" f1 ;
f2
hello1
hello2
Так что никаких «специальных слов» для реализации if, это основа Forth. Такие слова могут вмешиваться в процесс компиляции, и вставлять всякие goto, так что это аналог макросов из Lisp.
Вообще любую функцию можно сделать immediate, а само ключевое слово immediate лишь выставляет бит последнему определенному слову.
Но в скомпилированном коде от них ничего не остается, только если они сами что то не добавили конечно.
Исправление MOPKOBKA, :
immediate-слова, это просто функции, у которых выставлен один бит, с названием immediate. Когда компилятор встречает такую функцию в коде, он ее не «вставляет» (генерацией call 0x...), а немедленно (immediate) выполняет, после чего продолжает компиляцию.
Пример:
: f1 ." hello1" ; immediate
: f2 ." hello2" f1 ;
f2
hello1
hello2
Так что никаких «специальных слов» для реализации if, это основа Forth. Такие слова могут вмешиваться в процесс компиляции, и вставлять всякие goto, так что это аналог макросов из Lisp.
Вообще любую функцию можно сделать immediate, а само ключевое слово immediate лишь выставляет бит последнему определенному слову.
Исправление MOPKOBKA, :
immediate-слова, это просто функции, у которых выставлен один бит, с названием immediate. Когда компилятор встречает такую функцию в коде, он ее не «вставляет» (генерацией call 0x...), а немедленно (immediate) выполняет, после чего продолжает компиляцию.
Пример:
: f1 ." hello1" ; immediate
: f2 ." hello2" f1 ;
f2
hello1
hello2
Так что никаких «специальных слов» для реализации if, это основа Forth. Такие слова могут вмешиваться в процесс компиляции, и вставлять всякие goto, так что это аналог макросов из Lisp.
Исправление MOPKOBKA, :
immediate-слова, это просто функции, у которых выставлен один бит, с названием immediate. Когда компилятор встречает такую функцию в коде, он ее не «вставляет» (генерацией call 0x...), а немедленно (immediate) выполняет, после чего продолжает компиляцию.
Пример:
: f1 ." hello1" ; immediate
: f2 ." hello2" f1 ;
f2
hello1
hello2
Так что никаких «специальных слов» для реализации if, это основа Forth.
Исправление MOPKOBKA, :
immediate-слова, это просто функции, у которых выставлен один бит, с названием immediate. Когда компилятор встречает такую функцию в коде, он ее не «вставляет» (генерацией call 0x...), а немедленно (immediate) выполняет, после чего продолжает компиляцию.
Пример:
: f1 ." hello1" ; immediate
: f2 ." hello2" f1 ;
f2
hello1
hello2
Так что никаких «специальных слов», это основа Forth.
Исходная версия MOPKOBKA, :
immediate-слова, это просто функции, у которых выставлен один бит, с названием immediate. Когда компилятор встречает такую функцию в коде, он ее не «вставляет», а немедленно (immediate) выполняет, после чего продолжает компиляцию.
Пример:
: f1 ." hello1" ; immediate
: f2 ." hello2" f1 ;
f2
hello1
hello2
Так что никаких «специальных слов», это основа Forth.