![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 20.02.2010
Сообщений: 15
|
![]()
Доброго времини суток .
нужно создать программу на ассемблере " таймер " который высчитает время выполнепия команд запущеных после его запуска . Выходит так: 1. запустили программу таймер 2. программа создаёт файл например с названием Time в который будет записано название задач которые потом запущены , и время выполнения каждой из задач : Код:
Последний раз редактировалось Stilet; 20.09.2010 в 09:40. |
![]() |
![]() |
![]() |
#2 |
Python,C++,ASM,Php
Пользователь
Регистрация: 29.08.2010
Сообщений: 58
|
![]()
Надо делать через прерывание таймера.
Хакер - это не ламер с завышенным самомнением, а программист с заниженной зарплатой.
Нелегка и неказиста жизнь простого программиста. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 28.01.2010
Сообщений: 224
|
![]()
да нет я не согласен с прерыванием по таймеру. Так как здесь нужно учитывать время на обработку самого прерывания (сохранения регистров в стек)
всему свое время как зиме и весне
и каждому солнцу свой неба кусок |
![]() |
![]() |
![]() |
#4 | |
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
![]() Цитата:
Если нужно мерить сколько будет выполняться отдельные команд, то нужно смотреть в сторону rdtsc |
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 28.01.2010
Сообщений: 224
|
![]()
А смогли бы пояснить по подробнее пожалуста
всему свое время как зиме и весне
и каждому солнцу свой неба кусок |
![]() |
![]() |
![]() |
#6 |
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
![]()
В пентиумах появился счетчик тактов, который увеличивается на 1 каждый такт. Команда rdtsc считывает этот счетчик в пару EDX:EAX.
Т.е. для того, чтобы замерить сколько выполнялись те или иные команды, нужно запомнить начальное состояние счетчика, а затем прочитать его после, ну и поделить на кол-во тактов в секунде(милисекунде, наносекунде, смотря как мерить). |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 20.02.2010
Сообщений: 15
|
![]()
а можно ли подробно ознакомится с вашими идеями?
напишите текст программы - который вы считаете правильным я сам пробывал писать - не работает , да и я не знаю точно как это реализовать |
![]() |
![]() |
![]() |
#8 |
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
![]()
Мне лично просто лень писать код. Покажите, что вы пытались, может и поправим....
Собственно в этой теме есть исходник программы для таких целей. Он несколько запутан для новичка, наверное, но все же можно его почитать (компилятор фасм, ОС - виндовс)
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4 Последний раз редактировалось Goodwin98; 19.09.2010 в 21:46. |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 20.02.2010
Сообщений: 15
|
![]()
Таймер № 1
Код:
Код:
Код:
если кол. тактов - тогда нужно делить на частоту проца , для этого её нужно забивать в прогу ... но как быть если использовать на разных компах ( не буду же я на каждом компе указывать в проге его частоту ) может зделать чтоб прога сама находила частоту проца а потом делала все расчёты ? но как это замутить? Последний раз редактировалось Stilet; 20.09.2010 в 09:44. |
![]() |
![]() |
![]() |
#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 |