Приветствую Вас ГостьСреда, 20.08.2025, 09:43:10

Сайт посвящен проектированию и управлению модульной образ...


Каталог статей

Главная » Статьи » Мои статьи

77-87 Iskendirov
Вот слово, чтобы искать собранную последовательность в более длинной последовательности, адрес которой и количество находятся на стеке:
:? УТКА (addr n — флаг) S" утка"
ПОИСК - ГНИЕТ 2DROP;
Фраза - ГНИЛЬ 2DROP отказывается от адреса и количества характера, где матч (может иметь) произошел, оставляя только флаг, который сообщает о результате.
В случаях, подобных примерам выше, Вы, возможно, должны были бы позволить испытательной последовательности содержать произвольную смесь верхних - и строчные характеры. Если так, Вы должны установить или очистить соответствующий бит в каждом байте испытательной последовательности, чтобы стандартизировать на всех верхних или весь нижний регистр, прежде, чем сделать Ваше сравнение.
S" также может быть выполнен interpretively, чтобы обеспечить адрес и количество последовательности за пределами определения. Например, ВКЛЮЧЕННЫЙ (Sec¬tion 5.5.3) загружает файл, учитывая адрес и количество последовательности на стеке, содержащем имя файла и дополнительную информацию о пути. Типичное использование было бы:
... S" имя файла и путь>" ВКЛЮЧЕННЫЙ...
На многом выполнении, однако, интерпретируемый S" использует единственный буфер, чтобы держать последовательность. Поэтому, последовательное использование S" может over¬write буфер от предыдущего использования. Если Вы собираетесь использовать последовательность немедленно, как в примере выше, это не проблема. Если Вы хотите спасти это для более позднего использования, переместите это в более постоянное местоположение.
C" подобное слово, которое используется только в определениях двоеточия. Это com¬piles посчитанная последовательность (собранный с ее подсчетом в первом байте, com¬mon практикой в Дальше). Во время выполнения, C" возвращает адрес байта длины. Поэтому, распространено использовать ГРАФА, чтобы принести адрес первого байта последовательности и длины последовательности.
Например, рассмотрите слово? НЕТ это не сравнивает последовательность данных — чей адрес и длина находятся на стеке — к последовательности, собранной как часть определения? Нет, и возвращения, верные, если они соответствуют:
:? НЕТ (addr u - флаг) C" никакой" граф КОМПЭЙР;
? НИКАКОЙ не берет адрес и длину строки ввода. Когда? НЕТ не exe¬cuted, C" выдвинет адрес собранной посчитанной последовательности на стеке. ПОДСЧИТАЙТЕ новообращённых, которые адресуют к адресу последовательности и длине, leav¬ing соответствующие аргументы за СРАВНИВАЮТСЯ, чтобы выполнить сравнение.
АВАРИЙНОЕ ПРЕКРАЩЕНИЕ РАБОТЫ" является родовым словом обработки ошибок. Это обращается со своей входной ценностью как с флагом правды: если это будет отличным от нуля, то последовательность, которая следует, будет показана, и системное аварийное прекращение работы произойдет.
Наконец." просто показывает его последовательность.
Каждое из этих слов выполняет функции и когда определение, в котором оно используется, собрано и когда определение выполнено. Во время компиляции для каждого, ссылка на то, чтобы выполнять разовую функцию является com¬piled, сопровождаемым последовательностью. В выполняют время, поведение отличается среди них: Для S", адрес и длина последовательности будут выдвинуты на стеке. Для C", адрес посчитанной последовательности будет выдвинут на стеке. Для АВАРИЙНОГО ПРЕКРАЩЕНИЯ РАБОТЫ", тест будет выполнен. Для обоих." и АВАРИЙНОЕ ПРЕКРАЩЕНИЕ РАБОТЫ", последовательность будет впечатана. Примечание стека для слов ниже относится к разовому выполнением поведению.
Глоссарий
S" <последовательность>" (-c-addr u) Ядро, Файл
Интерпретируя, возвратите адрес и длину следующей последовательности, законченной", который находится во временном буфере. Собирая (в определении двоеточия), соберите последовательность; во время, которым управляют адрес и длина последовательности будут выдвинуты на стеке. "S-цитата"
C" <последовательность>" (-c-addr) Основное Расширение
Подобный S", но только используемый в определениях двоеточия. C" собирает посчитанную последовательность, длина которой сохранена в первом байте. Как с S", последовательность закончена ". Во время, которым управляют адрес посчитанной последовательности будет выдвинут на стеке. "C-цитата"
." <последовательность>" (-) Ядро
Соберите последовательность, которая будет напечатана, когда слово, которое содержит ее, будет выполнено. "точечная цитата"
Например:
: ПРИВЕТСТВИЕ (-) Привет там";
Ссылки
Обработка ошибок, последовательности Компилирования Раздела 5.3, Раздел 6.3.4
3.3 ПОСЛЕДОВАТЕЛЬНОСТИ В СТРУКТУРАХ ДАННЫХ
В дополнение к компилированию последовательностей в определениях Вы могли бы хотеть к com¬pile последовательность в структуре данных — например, следующее СОЗДАЕТ. Слово," собирает последовательность до завершения "в следующих доступных местоположениях в космосе данных. Последовательность собрана как посчитанная последовательность (см. Раздел 3.1.3),
с его длиной в первом байте. Вот пример:
СОЗДАЙТЕ МЭРИ," Мэри Брукс" СОЗДАЕТ ДЖОНА," Джон Смит"
... больше кодекса...
: ПРИВЕТСТВИЕ (addr-)." Вашим преподавателем будет "граф ТАЙП;
Использование:
МЭРИ ГРИТИНГ, Вашей преподавательницей будет Мэри Брукс.
Здесь имя МЭРИ или ДЖОН обеспечивает адрес посчитанной последовательности, показанной, ПРИВЕТСТВУЯ.
Имя," предназначено, чтобы быть совместимым с, и C, которые собирают числа в столах, как описано в Разделе 2.3.3.
Вы должны обеспечить некоторый способ получить адрес Вашей последовательности. В примерах выше, СОЗДАЙТЕ, используется, чтобы определить структуру данных, содержание которой - последовательность. В этом использовании не необходимо волноваться о выравнивании адреса (на платформах, которые требуют этого), потому что СОЗДАЮТ, гарантирует, что его указатель пространства данных союзник, как будет другие слова определения. Однако, если Вы используете более ручной подход, такой как:
ЗДЕСЬ," Мэри" ЗДЕСЬ," Ручьи" 2CONSTANT ИМЯ
... нет никакой гарантии, эти адреса будут союзник, и Вы можете хотеть использовать, ВЫРАВНИВАЮТ перед каждым ЗДЕСЬ. Также отметьте, что фактические последовательности в этом примере не являются смежными, потому что каждый снабжен предисловием его байтом количества и, если ВЫРАВНИВАЮТ, используется, возможно одним или более байтами выравнивания.
Глоссарий
," <последовательность>" (-) Общее пользование
Соберите следующую последовательность, законченную ". "цитата запятой"
Ссылки
Выравнивание адреса, Раздел 2.3.3
3.4 УПРАВЛЕНЧЕСКИЕ ОПЕРАЦИИ ПО ПОСЛЕДОВАТЕЛЬНОСТИ
Дальше содержит несколько слов, используемых, чтобы сослаться на последовательности, сравнить и приспособить их, и последовательности движения к различным местоположениям. Другие слова имели обыкновение вводить или производить строки символов, обсуждены в Разделе 5.3.
c-add^ — затем складывают пункт: адрес отправителя
c-addr2 — затем складывают пункт: адрес получателя
n — вершина складывают пункт: длина последовательности

стек
рост к
низкая память
Рисунок 10. Формат аргументов за операторы наиболее с двумя последовательностями

Большинство слов, которые воздействуют на одну последовательность, ожидает, что длина той последовательности будет сверху стека с его адресом ниже ее. Много слов, которые воздействуют на две отдельных последовательности, ожидают три пункта сверху стека в формате, показанном в рисунке 10, в котором количество одной длины обращается к обеим последовательностям. Вышеупомянутый формат используется вместо двух отдельного количества charac¬ter.
ДВИЖЕНИЕ слова (Раздел 2.3.4) является копией последовательности общего назначения opera¬tor. CMOVE и CMOVE>, описанный в глоссарии ниже, позволяют специальную обработку, если области последовательности накладываются. ДВИЖЕНИЕ обнаружит наложение и han¬dle движение, таким образом, оригинальное содержание исходной области будет идентично области назначения после движения.
Две команды движения последовательности изображены схематически в рисунке 11. Эти данные показывают различие в операции между CMOVE и CMOVE> и эффекты текстового движения. Последовательности накладываются в обоих случаях.
в который перемещены характеры.

addrl addr2 n CMOVE>
10 9 8 7 6 5 4 3 2 1 К
— addr
1 область наложения \
10 9 8 7 6 5 4 3 2 1
Рисунок 11. Действия последовательности копируют операторы
2

Поведение CMOVE и CMOVE> может эксплуатироваться, чтобы "колыхнуть" partic¬ular битовую комбинацию через область памяти. Рассмотрите эту последовательность:
ПОДУШКА 80 СТИРАЕТ ВЕДЬМУ ПОДУШКА DEADBEEF! ДОПОЛНИТЕ КОПИРУЮТ 4 + 76 ПОДУШЕК CMOVE 80 СВАЛОК
CMOVE скопирует каждый характер к положению на 4 байта выше в памяти, таким образом, $DEADBEEF образца будет копироваться всюду по области. Эта уловка иногда полезна, например в диагностических процедурах.
Глоссарий
- ПЕРЕМЕЩЕНИЕ (c-addr ui - c-addr U2) Последовательность
Удалите любые бланки перемещения в последовательности в адресе c-addr, чья оригинальная длина - u1, и возвратите приспособленные параметры последовательности. Тот же самый адрес возвращен, но с приспособленной длиной u2 равный u1 меньше число мест в конце последовательности. Если u1 - ноль, или если вся последовательность состоит из бланков, u2 - ноль. "минус перемещение"
/ ПОСЛЕДОВАТЕЛЬНОСТЬ (c-addri Ui n - c-addr2 U2) Последовательность
Приспособьте строку символов в c-addr1 u1 n характерами. Возвратите параметры c-addr2 = c-addr1 + n, и длина u2 = u1 - n. "последовательность разреза"
ЗДЕСЬ (-addr) Ядро
Выдвиньте адрес следующего доступного местоположения в космосе данных на стек.
CMOVE (c-addrx c-addr2 u-) Последовательность
Скопируйте u характеры с источника, начинающегося в адресе c-addr1 к des¬tination, начинающемуся в c-addr2. Доходы копии, познаковые от ниже до более высоких адресов. Три клетки удалены из стека. См. также ДВИЖЕНИЕ, Раздел 2.3.4. "C-движение"
CMOVE> (c-addrx c-addr2 u-) Последовательность
У CMOVE> есть те же самые аргументы как CMOVE, но случайная работа доходов копии - acter-by-character от выше, чтобы понизить адреса. CMOVE> используется для того, чтобы перейти от области данных до накладывающейся области данных в более высокой памяти. Три клетки удалены из стека. См. также ДВИЖЕНИЕ, Sec¬tion 2.3.4. “C-move-up”
Ссылки
Ввод / вывод строки символов, последовательности Парсинга Раздела 5.3, Раздел 6.1.5
3.5 СРАВНЕНИЕ СТРОК СИМВОЛОВ
Сравнения строки символов воздействуют на две отдельных строки символов. Это позволяет двум быть сравненными при помощи ASCII collat¬ing последовательность.
Слова в следующем глоссарии обеспечены. Они оба последовательности com¬pare, но они предназначены для полностью различных ситуаций. СРАВНИТЕСЬ предназначен для того, чтобы найти матч в списке или таблице, или в виде или операции по двоичному поиску, когда заказ сопоставления несоответствия последовательностям релевантен. ПОИСК предназначен для того, чтобы найти короткую последовательность в более длинной последовательности, как в функции поиска редактора.
Как пример их использования, Вы могли сравнить последовательность, адрес которой возвращен ПО ИМЕНИ с одним временно сохраненным в ПОДУШКЕ, проверяя следующим образом:
ПОДУШКА <1ength> ОБМЕН ИМЕНИ ДУБЛИКАТА СРАВНИВАЕТСЯ
Для более подробного примера рассмотрите две последовательности в рисунке 12.

Рисунок 12. Сравнение последовательности

Таблица 6 показывает некоторые сравнения и их результаты.
Таблица 6: примеры сравнения Последовательности
Замечания Результата фразы
<addr1> 55 <addr2> 55 СРАВНИВАЮТСЯ, 0 Последовательностей равны
<addr1> 56 <addr2> 56 СРАВНИВАЮТСЯ, 1 Последовательность в addr1 находится позже в сопоставлении последовательности
<addr1> 55 <addr2> 56 СРАВНИВАЮТСЯ,-1 Последовательность в addr1 короче, следовательно ранее в сопоставлении последовательности

ПОИСК вообще используется, чтобы найти короткую последовательность в более длинной последовательности. Это используется Дальше редактор. Как пример ПОИСКА, рассмотрите последовательности в рисунке 13.

Это был древний моряк, и он stoppeth один из три.
длина = 7 Мари ner addr3 —
addr —
Рисунок 13. Поиск строки <addr1> 56 <addr2> 7 ПОИСКОВ.. возвращение.would:
<addr3> 38 - 1
... потому что есть матч, начинающийся в addr3 с 38 характеров, оставленных в длинной последовательности.
Глоссарий
СРАВНИТЕ (c-addri Ui c-addr2 U2 - n) Последовательность
Сравните последовательность, определенную c-addr1 u1 к последовательности, определенной c-addr2 u2, и возвратите код n результата. Последовательности сравнены charac-"трижды характером", начинаясь в данных адресах и продолжаясь до длины более короткой последовательности или пока различие найдено. Если две последовательности идентичны и равных длин, n - ноль. Если две последовательности идентичны до длины более короткой последовательности, n-1, если u1 - меньше чем u2, и +1 иначе. Если две последовательности не идентичны до длины более короткой последовательности, n-1, если у первого характера несоответствия в последовательности в c-addr1 есть меньшее числовое значение чем соответствующий характер в последовательности в c-addr2, и +1 иначе.
ПОИСК (c-addri Ui c-addr2 U2 - c-addr3 U3 флаг) Последовательность
Ищите матч последовательности c-addr2 u2in последовательность c-addr1 u1 (последний, как предполагают, более длинен). Если матч найден, возвратитесь верный с адресом c-addr3 первого характера соответствия и длины u3 остатка от последовательности. Если никакой матч не найден, c-addr3 = c-addr1, u3 = u1, и флаг ложен.
Справочная ПОДУШКА, Раздел 3.1.2
3.6 ПРЕОБРАЗОВАНИЯ ЧИСЛА
Последовательности, которые включают числовые значения, требуют специальной обработки. Эта секция обсуждает оба преобразования числа входа и выхода.
3.6.1 Входное Преобразование Числа
Текстовый переводчик Форта автоматически преобразует последовательности, с которыми это сталкивается к числам, если их не называют словами и если их характеры содержат только числовые цифры от ноля, чтобы БАЗИРОВАТЬСЯ 1 плюс дополнительный специальный punctua¬tion. Числа, преобразованные этим способом, выдвинуты на стек данных.
Везде, где возможный, проектируйте свои заявления использовать в своих интересах интерактивный характер Форта. Таким образом гипотетическое слово ПРОСМАТРИВАЕТ, чья функция к выполните некоторое пользовательское конкретное количество просмотров (функция appli¬cation) должен ожидать только ее параметр на стеке. Тогда, чтобы выполнить 100 просмотров, пользователь мог напечатать:
ПРОСМОТРЫ i00
Такое использование является естественным и удобным для оператора, и не требует, чтобы никакое специальное программирование обращалось с входным параметром.
Однако, есть случаи, в которых нормальный Дальше синтаксис - inade¬quate. Некоторые примеры включают:
• Разбирая текстовую строку, которая прибывает из источника кроме termi¬nal, такого как магнитная лента.
• Вход чисел, которые должны быть в двойной точности, но не акцентированы (то есть, почтовые индексы).
• Вход чисел, которые должны следовать, а не предшествовать, com¬mand.
• Заявления, в которых нет никакого пользовательского доступа к словам в dic¬tionary.
Дальше обеспечивает слова, чтобы позволить пользователю обращаться с числовым входом во множестве обстоятельств. Эта секция описывает эти методы.
> ЧИСЛО - основная входная конверсионная рутина числа. Если это сталкивается с какой-либо нечисловой цифрой во время преобразования, это останавливается с указателем на тот характер вместо прерывания. Поэтому> ЧИСЛО часто используется, когда число введено программой непосредственно, не используя текстового переводчика.
> ЧИСЛО ожидает целое число двойной точности и адрес и количество строки ввода. Это оставляет целое число двойной точности (результат преобразования), и адрес и количество. Начальный адрес, данный> ЧИСЛО, должен указать на первое (наиболее - существенный) цифру последовательности цифр. Начальный номер двойной точности обычно определяется к нолю.
После> остановки ЧИСЛА, адрес во втором пункте стека - адрес первого нечислового характера> ЧИСЛО, с которым сталкиваются или, если последовательность была полностью преобразована первого характера мимо конца последовательности. Целое число двойной точности будет содержать данные от всего dig¬its, преобразованного к настоящему времени.
Пример использования> ЧИСЛО:
: ВХОД (-n) ДОПОЛНЯЕТ 5 ПАЧЕК ЧИСТОЙ БУМАГИ 5, ПРИНИМАЮТ> R 0. ДОПОЛНИТЕ R>> СНИЖЕНИЕ НОМЕР 2DROP;
Это калибрует область ПОДУШКИ к бланкам, и ждет до пяти цифр, которые будут сохранены там. 0. обеспечивает начальную ценность двойной точности, и ПОДУШКУ
R> обеспечивает адрес и фактический счет> ЧИСЛО. Фраза 2DROP СНИЖЕНИЕ отказывается от адреса и количества, возвращенного> ЧИСЛО и старшая часть переделанного числа.
ВХОД не будет преобразовывать строки ввода с продвижением минус знак, потому что минус не цифра. Если отрицательный вход необходим, вышеупомянутое defini¬tion может быть расширено, чтобы проверить первый характер прежде, чем начать преобразование; если это минус знак, начните> ЧИСЛО со следующего характера и отрицайте результат.
> ЧИСЛО возвращает адрес следующего байта последовательности, таким образом, это можно назвать в петле. Текстовые конверсионные звонки рутины числа переводчика> ЧИСЛО только этим способом.
Заявление, подобное этому, разбирает пакет данных, полученных по коммуникационной линии или от отчета ленты, в котором числовые области отделены произвольным разделителем такой как//. Чтобы пропустить пунктуацию или области, которые не имеют интереса, соответствующее число байтов может просто быть дано как аргумент ПОСЛЕДОВАТЕЛЬНОСТИ / (Раздел 3.4), чтобы сделать интервалы между for¬ward в последовательности.
Иногда числа могут быть в областях известной длины, но не sepa¬rated любым разделителем. В таких случаях лучшее решение может состоять в том, чтобы переместить группы цифр, чтобы ДОПОЛНИТЬ, где они могут быть преобразованы легко> ЧИСЛО.
> ЧИСЛО - оператор довольно низкого уровня. Большинство выполнения добавило высокоуровневые входные конверсионные слова числа, которые обычно более удобны; они не стандартизированы, как бы то ни было. Общий высокий уровень - входные конверсионные слова числа даны в глоссарии ниже.
Глоссарий
> ЧИСЛО (ud1 c-addr1 u1 - ud2 c-addr2 u2) Ядро
Преобразуйте характеры в последовательности в c-addr1, длина которого - u1, в цифры, используя корень в ОСНОВЕ. Первая цифра добавлена к ud1. Цифры Subse¬quent добавлены к ud1 после умножения ud1 числом в
ОСНОВА. Преобразование продолжается, пока с неконвертируемым характером (includ¬ing алгебраический знак) не сталкиваются, или вся последовательность преобразована; результат - ud2. c-addr2 - местоположение первого непеределанного char¬acter или, если вся последовательность была преобразована первого характера вне последовательности. u2 - число непеределанных характеров в последовательности. "к числу"
ЧИСЛО (c-addr U - n | d) Общее пользование
Попытайтесь преобразовать последовательность в c-addr длины u в цифры, используя корень (например, 10 для десятичного числа, 16 для ведьмы) в ОСНОВЕ. Если действительная пунктуация (. +-/:) найденный, возвратите d; если нет никакой пунктуации, возвратите n. Если con¬version терпит неудачу из-за характера, который не является ни цифрой, ни пунктуацией, АВАРИЙНОЕ ПРЕКРАЩЕНИЕ РАБОТЫ происходит.
ЧИСЛО? (n - 0 | n i | d 2) Общее пользование
Как ЧИСЛО, но возвращения флаг выше результата (если любой) описание результата:
Таблица 7: Преобразование следует из ЧИСЛА?
Результат ценности флага
0 Отказов (никакое АВАРИЙНОЕ ПРЕКРАЩЕНИЕ РАБОТЫ не происходит),
1 Никакая пунктуация, единственное число
2 Пунктуации, удваивает число.
Ссылки
Числовой вход, шаги Последовательности Раздела 1.1.6, Раздел 3.4 ПРИНИМАЕТ, ПОДУШКА Раздела 5.4.1, Раздел 3.1.2
Категория: Мои статьи | Добавил: BANGBANG (12.10.2011)
Просмотров: 475 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Категории раздела
Мои статьи [5]
Наш опрос
Как мы учимся?
Всего ответов: 13
Поиск
Друзья сайта
  • Блог веб-мастера
  • Альянс студентов
  • Онлайн кинотеатр
  • Бизнес-клуб
  • Компьютеры
  • Программирование
  • www.ComLogia.Su

  • Добро пожаловать на сайт специальности "Информационные системы" Карагандинского государственного технического университета!
    Последние новости Учебные материалы для студентов Самые активные пользователи В социальные сети
    Матрица компетентност... (22) [05.11.2011]
    Информация (0) [11.10.2011]
    Открытие сайта специа... (1) [12.04.2011]
    Как написать курсовую... (1) [13.04.2011]
    Скачать Adobe Photosh... (2) [13.04.2011]
    Скачать клавиатурный ... (4) [13.04.2011]
    Скачать книгу "К... (1) [10.10.2011]
  • Adikoff
  • young
  • Sid_MC_aka_Destroy
  • Евгений
  • АК_47
  • na3bka
  • Анна
  • zev$
  • CrazyLittleBit
  • Jokerkz