Цель состоит в том, чтобы создать слово Forth в словаре и затем распечатать содержимое памяти этого слова. Первый шаг прост. Слово : main
создается так, как описано в руководстве. После создания слова указатель словаря перемещается на следующую позицию, поэтому мне нужно вычесть из него некоторые элементы, и теперь можно выгрузить область памяти, в которой было создано слово:
\ create a dummy routine
: main 1 dup + . ;
\ put dictionary pointer to the stack
\ and subtract 50 indizies
dp 50 -
\ print out 20 cells to the screen from dp-50 until dp+50
\ but where is my newly created routine ": main"?
100 dump
bye
------
gforth "a.fs"
7F81DF443FC6: 00 00 20 17 12 AF 60 55 - 00 00 04 00 00 00 00 00 .. ...`U........
7F81DF443FD6: 00 00 A0 58 14 AF 60 55 - 00 00 10 00 00 00 00 00 ...X..`U........
7F81DF443FE6: 00 00 FF FF FF FF FF FF - FF FF 00 00 00 00 00 00 ................
7F81DF443FF6: 00 00 50 82 49 DF 81 7F - 00 00 F8 3F 44 DF 81 7F ..P.I......?D...
7F81DF444006: 00 00 08 82 49 DF 81 7F - 00 00 F0 81 49 DF 81 7F ....I.......I...
7F81DF444016: 00 00 32 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ..2.............
7F81DF444026: 00 00 00 00
К сожалению, область памяти, отображаемая командой dump, не имеет раздела, начинающегося с : main
, и операторы внутри слова 1 dup ...
также отсутствуют. Так где же находится вновь созданное слово? Как я могу увидеть необработанные байты в памяти?