![]() |
|
|
![]()
|
|
| Joker07 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 17.6.2006 Репутация: нет Всего: нет |
Привет Vingrad. Помогите пж-та разобраться с программой, определяющей скорость выполнения трех операций: сложение и вычитание двух слов, находящихся в регистрах, и умножения двух слов.
Скорость тут определяется путем фиксации и чтения счетчика канала 0. Ассемблер я начал изучать совсем недавно, поэтому не совсем понимаю, как работает код программы. Кто понял о чем речь, пж-та, добавьте свои комментарии и исправьте мои, я один не справлюсь
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 1 Всего: 207 |
PIT не подходит для вычисления времени выполнения одной инструкции
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Joker07 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 17.6.2006 Репутация: нет Всего: нет |
А то такое PIT? Это всмысле таймер?
Задание составлял преподаватель, там было указано использовать таймер, канал 0. |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 1 Всего: 121 |
Скажи преподавателю, что он муд... На каком процессоре и в какой среде запускается программа? -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 1 Всего: 207 |
Programmable Interrupt Timer
какой результат выполнения? -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Joker07 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 17.6.2006 Репутация: нет Всего: нет |
Результат выполнения на процессоре Athlon 3000+, Среда - Windows XP:
Время выполнения одной операции add 0,000007560 Время выполнения одной операции sub 0,000005880 Время выполнения одной операции mul 0,000009240 |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 1 Всего: 121 |
Тут есть несколько ньюансов, которые делают твою задачу в общем случае неразрешимой, по-крайней мере в той постановке, которая здесь имеется. 1. Исходник написан под DOS, а ты его исполняешь под Windows XP. приложения MSDOS в Windows XP исполняются в режиме эмуляции внутри вритуальной машины. Поидее Windows должна эмулировать поведение, но в данном случае я не знаю какие именно данные возвращаются при чтение из портов. 2. Для современных процессоров такая величина как "время исполнения одной инструкции" в общем-то отсутствует. Наиболее приближённая величина это instruction execution latency(латентность исполнения инструкции), т.е. это кол-во тактов, которое требуется для исполнения всех микроопераций составляющих одну машинную инструкцию. При этом предполагается, что инструкцию и данные находятся в кеше первого уровня, инструкция декодирована(разложена на микрооперации или МОПы) и "в процессоре" нет других инструкций, которые бы потребовали моментального исполнения. В общем, данная величина охарактеризовывает время исполнения инструкции в идеальных условиях для одного поколения процессоров. Так вот латентности для инструкций обычно публикваются производителями процессоров в спец. справочниках. Для твоего процессора, согласно Software Optimization Guide for AMD64 Processors (с) AMD, инструкции add reg16,reg16 / sub reg16,reg16 выполняются за 1 такт, а инструкция mul reg16 за 4. 3. Частота таймера на системной плате слишком низка. Это сообщение отредактировал(а) W4FhLF - 6.7.2008, 15:20 -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Joker07 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 17.6.2006 Репутация: нет Всего: нет |
Да уж
|
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 1 Всего: 121 |
Программа работает неверно, она выдаёт неверные результаты. Более того, задача в текущей постановке сама по себе неверна. В итоге ты получишь неверное представление о предмете изучения, а преподаватель продолжит "учить". А что тебе конкретно непонятно в коде выше? PS Где учишься, если не секрет? -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Joker07 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 17.6.2006 Репутация: нет Всего: нет |
Я понимаю работу программы только в общем ключе - программа работает с таймером, используя канал 0, при помощи функции 40h. При помощи 43h записывает данные в порт, используя 40h считывает данные из порта. А что там передается в регистры, т.е. что с чем складывается/вычитается/умножается, как это конкретно по коду происходит (построчно), я не понимаю.
PS Учусь в ДГТУ (г.Ростов-на-Дону). PPS Прогу уже показывал, про саму работу программы препод отозвался нормально, типа работает. Теперь нужно объяснить ему, но как, я ведь сам толком не понимаю... Это сообщение отредактировал(а) Joker07 - 6.7.2008, 18:01 |
|||
|
||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 1 Всего: 207 |
аналогичные действия производятся после выполнения нужной инструкции в итоге мы получаем 2 значения счетчика: перед и после выполнения инструкции второе меньше первого, т. к счетчик уменьшается разность двух значений "определяет время выполнения инструкции" -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| Joker07 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 17.6.2006 Репутация: нет Всего: нет |
Спасибо. Но я все еще много чего не понимаю, а именно:
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 1 Всего: 207 |
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Joker07 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 17.6.2006 Репутация: нет Всего: нет |
Теперь понятно.
Это сообщение отредактировал(а) Joker07 - 7.7.2008, 14:17 |
|||
|
||||
![]()
|
| Правила форума "Asm для начинающих" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для начинающих | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |