Если бы вы пропечатали описание MYSWAP, то вы бы увидели, что оно идентично SWAP. Вы уже знаете, что NEXT используется для передачи управления внутреннему интерпретатору. Тогда что же делает END- CODE? В некоторых ассемблерах END-CODE может выполнять функцию NEXT. В других, таких как MMSFORTH, единственная функция END-CODE - это сделать контекстным тот словарь, который им был до начала работы CODE. Стандарты требуют, чтобы END-CODE сделал находимым в словаре имя слова, созданного CODE- (Если при компиляции выявлена ошибка, то END-CODE этого не сделает, предотвращая тем самым узнавание ошибочного слова.) END-CODE осуществляет это обычно путем установления бита-метки в соответствующее состояние (смотри гл. 14), Некоторые версии Форта, такие как MVPFORTH, используют также ;С в качества синонима END-CODE.
В описании MYSWAP мнемоника скомпилировала соответствующий объектный код в поле параметров слова. Таким образом DX POP заносит код 5A в качестве первого байта в поле параметров. Вы можете сформировать тот же самый объектный код в MMSFORTH (и во многие другие версии Форта), если вы введете CREATE MYSWAP HERE DUP 2- ! ASSEMBLER DX POP AX POP DX PUSH AX PUSH NEXT FORTH Вы можете также использовать CREATE MYSWAP HERE DUP 2- ! ASSEMBLER DX POP AX POP 52 С, 50 С, NEXT FORTH или CODE MYSWAP DX POP AX POP 52 С, 50 С, NEXT END-CODE Теперь вы можете увидеть, как можно ввести объектный код в описание CODE, даже если у вас нет полного набора мнемоники.
Могут существовать и другие способы завершения описаний типа CODE. В MMSFORTH следующее описание MYSWAP является идентичным по своему поведению нашему первому описанию: CODE MYSWAP DX POP AX POP PSH2 END-CODE PSH2 эквивалентно следующему: DX PUSH AX PUSH NEXT