[an error occurred while processing this directive] [an error occurred while processing this directive]
Я вам вот что скажу
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Elektronik 04 июня 2002 г. 11:43
В ответ на: Объясню еще разок. отправлено Bukva 04 июня 2002 г. 10:52

Как видно вы пишете для PC и поэтому смысла нет писать на ассемблере под двум причинам.
1. Компиллятор сам оптимизирует выходной код и вручную вы его лучше не напишите. Для современных процессоров с конвейерной выборкой команд и одновременным их выполненим (для предсказаний переходов итп)важны такие параметры как порядок следования ассемблерных команд, выравнивание и многое другое. Вручную это практически невозможно учесть.
2. Одно обращение к порту ввода-вывода разбивается на 8 тактов шины. А для младших адресов портов ввода-вывода которые отображаются на ISA с частотой тактирования порядка 8 Мгц, цикл обращения все равно получится равный величине порядка 1 мкс. Отсюда вывод, даже если вы и выиграете что-то написанием кода на ассемблере, общий прирост скорости при обращении к портам ввода вывода будет стремиться к нулевой величине.
P.S. Единственно как можно выиграть в быстродействии при обращении к I/O это считыванием их состояния через DMA напрямую.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru