LINUX.ORG.RU

История изменений

Исправление 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.