|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.09.2010, 21:48 | #1 |
Пользователь
Регистрация: 20.02.2010
Сообщений: 15
|
таймер
Доброго времини суток .
нужно создать программу на ассемблере " таймер " который высчитает время выполнепия команд запущеных после его запуска . Выходит так: 1. запустили программу таймер 2. программа создаёт файл например с названием Time в который будет записано название задач которые потом запущены , и время выполнения каждой из задач : Код:
Последний раз редактировалось Stilet; 20.09.2010 в 09:40. |
18.09.2010, 16:11 | #2 |
Python,C++,ASM,Php
Пользователь
Регистрация: 29.08.2010
Сообщений: 58
|
Надо делать через прерывание таймера.
Хакер - это не ламер с завышенным самомнением, а программист с заниженной зарплатой.
Нелегка и неказиста жизнь простого программиста. |
18.09.2010, 20:48 | #3 |
Форумчанин
Регистрация: 28.01.2010
Сообщений: 224
|
да нет я не согласен с прерыванием по таймеру. Так как здесь нужно учитывать время на обработку самого прерывания (сохранения регистров в стек)
всему свое время как зиме и весне
и каждому солнцу свой неба кусок |
18.09.2010, 20:53 | #4 | |
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
Цитата:
Если нужно мерить сколько будет выполняться отдельные команд, то нужно смотреть в сторону rdtsc |
|
18.09.2010, 21:11 | #5 |
Форумчанин
Регистрация: 28.01.2010
Сообщений: 224
|
А смогли бы пояснить по подробнее пожалуста
всему свое время как зиме и весне
и каждому солнцу свой неба кусок |
18.09.2010, 21:15 | #6 |
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
В пентиумах появился счетчик тактов, который увеличивается на 1 каждый такт. Команда rdtsc считывает этот счетчик в пару EDX:EAX.
Т.е. для того, чтобы замерить сколько выполнялись те или иные команды, нужно запомнить начальное состояние счетчика, а затем прочитать его после, ну и поделить на кол-во тактов в секунде(милисекунде, наносекунде, смотря как мерить). |
19.09.2010, 21:35 | #7 |
Пользователь
Регистрация: 20.02.2010
Сообщений: 15
|
а можно ли подробно ознакомится с вашими идеями?
напишите текст программы - который вы считаете правильным я сам пробывал писать - не работает , да и я не знаю точно как это реализовать |
19.09.2010, 21:41 | #8 |
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
Мне лично просто лень писать код. Покажите, что вы пытались, может и поправим....
Собственно в этой теме есть исходник программы для таких целей. Он несколько запутан для новичка, наверное, но все же можно его почитать (компилятор фасм, ОС - виндовс)
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4 Последний раз редактировалось Goodwin98; 19.09.2010 в 21:46. |
19.09.2010, 21:50 | #9 |
Пользователь
Регистрация: 20.02.2010
Сообщений: 15
|
Таймер № 1
Код:
Код:
Код:
если кол. тактов - тогда нужно делить на частоту проца , для этого её нужно забивать в прогу ... но как быть если использовать на разных компах ( не буду же я на каждом компе указывать в проге его частоту ) может зделать чтоб прога сама находила частоту проца а потом делала все расчёты ? но как это замутить? Последний раз редактировалось Stilet; 20.09.2010 в 09:44. |
21.09.2010, 11:58 | #10 |
Пользователь
Регистрация: 20.02.2010
Сообщений: 15
|
Хорошо я понял в чём прикол - всё предложенное выше довольно сложно реализовать. Но если использовать таймер процессора и чтоб он засекал выполнение не одной команды , а цикл из 1000 nop например ( чтобы минимальное время было в секундах ) это проще .
1 запускаем программу таймер 2 программа создаёт файл в который запишет только время старта и остановки таймера 3 стартует таймер фиксируется текущее время и заносит его в созданный файл и пошло виполнение заданного цикла например из 1000 одинаковых действий 4 цикл закончился и таймер фиксирует текущее время и сново заносит его в тот же файл ,и программа останавливается. Потом можно зайти в файл и посмотреть время старта и финиша цикла .Или чтоб этот файл автоматически открывался для просмотра .Программа под DOS. Может кто подскажет как это реализовать ? вот Goodwin98 подтолкнул на прогу внутр. таймера проца. RDTSC // Помещает в EDX:EAX значение внутреннего счетчика процессора mov T1, eax // Запомнили младшую часть (старшая вряд ли изменится) dec ecx // тестовая команда (заменить её на цикл из 1000 nop ) RDTSC // новое значение счтечика mov T2, eax writeln(T2-T1:6); // Выводим разницу в значениях помогите собрать всё в прогу Последний раз редактировалось Hunter557; 21.09.2010 в 12:14. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Таймер | Ins1De | Общие вопросы C/C++ | 2 | 26.05.2010 22:29 |
Таймер на С++ | Александр Елис | Помощь студентам | 3 | 26.01.2010 16:30 |
Таймер | graff | Общие вопросы C/C++ | 11 | 04.07.2009 01:36 |
Таймер | IVANSour | Общие вопросы Delphi | 2 | 18.01.2009 14:41 |
Таймер | Stanislav | Общие вопросы Delphi | 3 | 26.11.2007 06:52 |