Для этого используется уже известное
Для этого используется уже известное нам слово
LITERAL. Однако включить его непосредственно в текст нельзя, так как это слово имеет признак немедленного исполнения и будет исполняться во время компиляции данного определения. Чтобы скомпилировать слово с признаком немедленного исполнения, используется слово
[COMPILE] (от COMPILE — компилировать), которое само имеет такой признак. Оно принудительным образом компилирует следующее за ним слово независимо от наличия у него признака немедленного исполнения. Таким образом, ввод строки, ограниченной кавычкой, с помощью слова
C" можно задать так:
C" " WORD. Такой текст более нагляден, чем тот, в котором используется конкретный код или обозначающая его константа.
Важной областью применения строковых значений являются форматные преобразования, позволяющие переводить число из машинного двоичного представления в строку литер. Эти преобразования выполняются над числами двойной длины, результирующая строка размещается во временном буфере
PAD (прокладка), который заполняется с конца. Такое название буфера связано с тем, что он располагается в незащищенной части адресного пространства между словарем и стеком. Слово
PAD кладет на стек адрес конца этого буфера и обычно определяется так:
: PAD ( ---> А ) HERE 100 + ;
В данном случае предполагается, что размер буфера не будет превышать 100 байт.
Собственно форматное преобразование начинается словом
<# которое устанавливает служебную переменную
HLD на конец буфера
PAD:
: <# ( ---> ) PAD HLD ! ;
Занесение очередной литеры в буфер
PAD выполняет слово
HOLD (сохранить):
: HOLD ( С ---> ) -1 HLD +! HLD @ C! ;
Преобразование числа выполняет слово
# DD1 --> DD2, которое работает со значениями двойной длины. Параметр делится на текущее значение переменной
BASE (основание системы счисления) и заменяется на стеке получившимся частным, а остаток переводится в литеру соответствующую ему как цифра в данной системе счисления, и через слово
HOLD эта литера добавляется в буфер
PAD.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий