Что входит в указатель кода определения двоеточия?
Указатель кода, как описано в " Начала FORTH" Лео Броди:
В случае определения двоеточия указатель указывает на код, который выполняет остальные слова в определении двоеточия. На практике существует много способов реализации этой концепции, включая реализацию собственного кода.
Что это значит, хотя? Это указатель на слово типа интерпретатора, такое как execute
?
2 ответа
Как говорит Броди, есть много способов реализовать это. Отличное объяснение некоторых из них можно найти в серии "Бегущий вперед" Брэда Родригеса.
В частности (возможно, слишком подробное) объяснение прямой потоковой передачи см. В разделе Прямая потоковая передача в TransForth.
Повеселись!
В обычной многопоточной реализации это, скорее всего, указатель на необработанный машинный код. Машинный код обычно сохраняет внутренний указатель инструкций интерпретатора в стеке возврата, а затем загружает указатель инструкций с новым значением, которое указывает на начало многопоточного кода для вызываемого слова.
На языке псевдо-ассемблера для 32-битной машины:
\ R is a register holding the return stack pointer
\ I is a register holding the inner interpreter instruction pointer
\ W is a register pointing to the code field of the word to be executed
\ NEXT is a macro that implements the inner interpreter
sub R, R, #4
mov (R), I
add I, W, #4
NEXT
NEXT
может расшириться в
mov W, (I)
add I, I, #4
jmp (W)