Язык программирования Форт


Глава 14. Память Форта. Словари и контекстные словари - часть 9


Таким образом, память может адресоваться через обычные коды и, хотя карта памяти организована так же, как было описано, программа может работать со всей доступной памятью. Может быть, наиболее сложное использование памяти большей емкости реализовано в HS/FORTH, где применены различные сегменты для различных частей описаний слов, для различных контекстных словарей и для стеков, буферов и т.д. Таким образом, дополнительная память используется многими компонентами Форта, в то время как 16- разрядные числа могут использоваться так же, как в Форте, в пространстве, ограниченном 64К байтами. Различные схемы использования памяти в 16-разрядных ЭВМ является темой для другой книги. Лучший путь понять, что где лежит, - это пропечатать на терминале большой кусок памяти. Мы предлагаем вам сделать это в упражнениях следующего раздела этой главы. Даже если ваш Форт имеет оператор DUMP, вы можете найти следующее описание полезным, так как оно выдает как ASCII, так и цифровое представление байтов. : DUMP ( начальный адрес, число строк --) CR BASE @ >R HEX ( спасение BASE, выбор шестнадцатеричной системы) 16 * OVER + SWAP ( вычисление индексов цикла) DO I 0 TYPE 2 SPACES ( печать номера строки) 16 0 DO ( Начало цикла по байтам) I 4 MOD 0= IF SPACE THEN ( группируем байты по 4) I J + C@ ( получаем байт) 0 TYPE SPACE ( печать байта) LOOP ( цикл для 16 байтов) CR 7 SPACES ( новая строка) 16 0 DO ( начало цикла для символов) I 4 MOD 0= IF SPACE THEN ( группируем символы по 4) I J + C@ DUP ( извлечение байта) 31 > OVER 127 < AND ( печатный ascii-символ?) IF EMIT 2 SPACES ( если так. печатаем символ) ELSE DROP 3 SPACES ( если нет. удаляем байт) THEN ( конец ветвления) LOOP CR ( цикл для 16 байтов) 16 +LOOP ( шаг в 16 байтов на каждой строке) R> BASE ! ; ( восстановление BASE пo завершении)

Слово DUMP предполагает, что в стеке лежит начальный адрес и число 16- байтовых строк, которые вы хотите отобразить. При выводе строки из 16 байтов пропечатывается шестнадцатеричный начальный адрес, за которым следует сами байты.


Начало  Назад  Вперед