русс | укр

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

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

G.1 Режимы адресации


Дата добавления: 2015-06-12; просмотров: 481; Нарушение авторских прав


Подобно процессору 386, процессору i486 необходим дополнительный такт для генерации исполнительных адресов, когда используется индексный регистр. Более того, если используется одна индексная компонента (т.е. одновременно не используются базовый регистр и индексный регистр), и нет необходимости в масштабировании, более быстрым является использование регистра в качестве базового, а не в качестве индексного. Например :

mov eax, [esi] ; использование esi в качестве базыmov eax, [esi*] ; использование esi в качестве индекса, 1 ; такт дополнительно

Если используются и база, и индекс, или используется масштабирование индекса, более быстрым способом адресации является использование комбинированного метода, даже если это и займет один дополнительный тактовый цикл процессора при выполнении.

Когда регистр используется в качестве базовой компоненты, тогда используется дополнительный тактовый цикл, если этот регистр являлся приемником в команде, непосредственно выполнявшейся перед данной командой (предполагается, что все операции уже находятса в предварительно созданной очереди). Поэтому для получения наибольшего быстродействия две команды должны разделяться по крайней мере еще одной командой. Например:

add esi, eax ; esi - регистр-приемникmov eax, [esi] ; esi - базовый регистр, 1 такт дополнительно

Существуют также и другие неявные или косвенные методы использования приемника и базового регистра, в первую очередь регистра указателя стека ESP. Регистр ESP является неявной базой всех команд типа PUSH/POP/RET и он же является неявным приемником в командах CALL/ENTER/LEAVE/RET/PUSH/POP. Более того, команда LEAVE, следующаа непосредственно за командой RET, будет использовать один дополнительный цикл. Но если команды LEAVE и RET реорганизованы таким образом, что одну от другой отделяет какая-то другая команда, не требуется никаких дополнительных тактов. (Смотри также другие рекомендации, касающиеся команды LEAVE).



Нет никакой необходимости разделять последовательные команды PUSH/POP. Процессор i486 допускает такую последовательность без использования дополнительного такта.

Все такие преобразования последовательности команд не влияют на выполнение программы на 386 процессоре.

Процессор i486 также требует дополнительного такта для выполнения команды, которая имеет одновременно и операнд - непосредственное значение, и операнд, заданный как смещение в памяти. Например :

mov указатель на двойное слово foo, 1234h ; одновременно и непосредственное значение, и операнд - ; смещение в памяти.mov указатель на двойное слово baz, 1234hmov [ebp-200], 1234h

Когда требуется использовать константы, более эффективно использовать непосредственные значения констант вместо предварительной загрузки констант в регистры. Но если одна и та же константа используется больше, чем один раз, то быстрее будет загрузить значение этой константы в регистр и затем много раз использовать этот регистр. Эта оптимизация не влияет на выполнение программы на 386 процессоре. Следующая последовательность действий выполняется быстрее, чем приведенная выше, если все команды находятся в предварительно созданной очереди, и, поскольку команды короче, их в действительности легче организовать в очередь :

mov eax, 1234hmov указатель на двойное слово foo, eaxmov указатель на двойное слово baz, eaxmov [ebp-200], eax


<== предыдущая лекция | следующая лекция ==>
E.2.4 Кодирование полей команд для вещественных вычислений | G.2 Модуль предварительной выборки


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.04 сек.