Редактирование:
BRANCH
(раздел)
Перейти к навигации
Перейти к поиску
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
== Реализация == В [[Каллисто|Каллисто 1.0]] словарная статья BRANCH содержит два [[CFA|токена]], осуществляющие безусловные переходы как в [[Память двоичных данных|области данных]], так и в [[Память программ|памяти программ]]: <pre> 664 ;#BRANCH 665 ; BRANCH ( −− ) Ветвление. Безусловный переход в шитом коде. 666 ; Служебное слово для реализации структур управления −− таких, как ELSE BEGIN 667 LBRAN: .DB 6 668 .TEXT "BRANCH" 669 .DW LZBRAN 670 BRAND: .DW CNTD ; Безусловный переход для памяти данных 671 POPCNTD: RM3 1 + M3 672 CNTD: KRM6 RME ∗ KRM6 + M6 KGOTO9 673 674 BRAN: .DW CNT ; Безусловный переход для памяти программ 675 POPCNT: RM3 1 + M3 676 CNT: 677 Cx PPM9210 ; Прочесть двухбайтовое значение по номеру X=0 678 PPM9042 ; RI := MEMW[RI] 679 KGOTO9 ; NEXT </pre> === Реализации в SP-Forth 4.20 === <pre> : TC-BRANCH, ( ADDR -> ) \ скомпилировать инструкцию ADDR JMP ?SET SetOP SetJP E9 C, DP @ CELL+ - , DP @ TO LAST-HERE ; </pre> <pre> : BRANCH, ( ADDR -> ) \ скомпилировать инструкцию ADDR JMP ?SET SetOP SetJP E9 C, DUP IF DP @ CELL+ - THEN , DP @ TO LAST-HERE ; </pre> === Советская реализация === У Баранова-Ноздрунова приводится следующее высокоуровневое определение слова BRANCH (стр. 54): : BRANCH ( ---> ) R> @ >R ; Для повышения скорости исполнения в [[Каллисто]] BRANCH реализован, как [[примитив]]. В ФОРТ-ЕС слово BRANCH также было [[примитив]]ом. Вот его описание и определение: <PRE> BRANCH К -> ПРОДОЛЖИТЬ ИНТЕРПРЕТАЦИЮ ОТ ЗНАЧЕНИЯ 5 СЛЕДУЮЩЕГО СКОМПИЛИРОВАННОГО АДРЕСА BRANCH# M ПРОДОЛЖЕНИЕ ИНТЕРПРЕТАЦИИ ОТ АДРЕСА В 5 СЛЕДУЮНЕМ ПОЛУСЛОВЕ Экран номер 5 ( 09.09.86 BRANCH ?BRANCH (LOOP/ (+LOOP/ ) CODE BRANCH M: ВRANСН# RI 0 (, RI RFORTH LH, RI RMASK NR, RNEXT BR, </PRE> В FORTH ИТЭФ слово BRANCH тоже было [[примитив]]ом: <PRE> HEAD 206Q,'BRANC',310Q,BRAN ; BRANCH CNT: ADD SI, [SI] NEXT </PRE> === jump в colorForth (cf2019.nasm 2019 Sep 14) === <PRE> jump: pop edx add edx, _TOS_ lea edx, [ edx + ( _TOS_ * 4 ) + 0x05 ] add edx, [ edx - 0x04 ] _DROP_ jmp edx </PRE>
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
Pmkwiki:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:
Отменить
Справка по редактированию
(в новом окне)
Навигация
Персональные инструменты
Вы не представились системе
Обсуждение
Вклад
Создать учётную запись
Войти
Пространства имён
Статья
Обсуждение
русский
Просмотры
Читать
Править
История
Ещё
Поиск
Навигация
Заглавная страница
Свежие правки
Случайная страница
Справка по MediaWiki
Инструменты
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице