TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

Автоматическое определение размера перехода 

             Если не указывается противное,  встроенный ассемблер оптими-
        зирует инструкции перехода, автоматически выбирая наиболее корот-
        кую,  и, следовательно, наиболее эффективную форму инструкции пе-
        рехода.  Такое  автоматическое   определение   размера   перехода
        применяется  к инструкции безусловного перехода (JMP) и всем инс-
        трукциям условного перехода,  когда переход выполняется на метку,
        а не процедуру или функцию.

             Для инструкции  безусловного  перехода  встроенный ассемблер
        генерирует короткий переход (один байт кода операции,  за которым
        следует один байт смещения), если расстояние до целевой метки на-
        ходится в границах от -128 до 127 байт.  В противном случае гене-
        рируется  ближний  переход  (один байт кода операции,  за которым
        следую два байта смещения).

             Для инструкций условного  перехода  короткий  переход  (один
        байт кода операции,  за которым следует один байт смещения) гене-
        рируется,  если расстояние до целевой метки находится в  пределах
        от -128 до 127 байт,  в противном случае встроенный ассемблер ге-
        нерирует короткий переход с обратным условием, который выполняет
        переход  на целевую метку через ближний переход (в общем случае 5
        байт). Например, оператор ассемблера:

             JC    Stop

        где Stop не находится в границах короткого перехода, преобразует-
        ся в последовательность машинных кодов,  соответствующих инструк-
        циям:

             jnc   Skip
             jmp   Stop
             Skip:

             Переходы на точки входа в процедуру или функцию всегда имеют
        ближний или дальний тип (но не короткий),  а условные переходы на
        процедуру или функцию не допускаются.  Вы можете указать встроен-

        ному ассемблеру, что нужно генерировать ближний или дальний пере-
        ход, используя конструкцию NEAR PTR или FAR PTR. Например, опера-
        торы ассемблера:

             jmp      NEAR PTR Stop
             jmp      FAR PTR Stop

        будут всегда генерировать соответственно ближний и дальний  пере-
        ход,  даже  если  на метку Stop можно перейти с помощью короткого
        перехода.

Содержание

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz