LINUX.ORG.RU

Временная задержка на Asm.


0

1

Как правильно делается временная задержка на ассемблере? Или правильно ли зная время выполнения одной операции узнать сколько надо выполнить таких операций и таким образом сделать задержку?


- знаешь частоту камня
- знаешь длительность операции в тактах
- делишь одно на другое, находишь длительность операции в секундах
- делаешь цикл на нужное число операций

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

marvin_yorke ★★★
()

100% CPU нагрузка, АЙ МАЛАЦА.

сискол в слип что мешает сделать?

tensai_cirno ★★★★★
()
Ответ на: комментарий от ECLIPSE

Ну а кольцо какое? Есть ли ОС, есть ли многозадачность?

Если в 0 кольце без ОС, то просто делаешь обработчик прерывания таймера и функции для работы с ним.

vkos ★★
()
Ответ на: комментарий от ECLIPSE

С x86 и без таймера? Т.е. используя только процессор? Ну тогда выше уже посоветовали: отключить прерывания и считать инструкции. Но только это при условии, что частота не меняется.

vkos ★★
()
Ответ на: комментарий от ECLIPSE

кури даташит по мк. обычно в мк куча разных таймеров есть. навесил обработчик прерывания и стартанул таймер.

mi_estas
()
Ответ на: комментарий от marvin_yorke

А для суперскалярных процессоров это разве справедливо? Я не гуру в этих вопросах если что, просто спрашиваю.

mi_estas
()
Ответ на: комментарий от mi_estas

телепаты в отпуске, ТС не указал архитектуру/семейство процессора, посему предложил то, с чем знаком - банальный RISC (AVR, ARM, PIC)

marvin_yorke ★★★
()
Ответ на: комментарий от ECLIPSE

А если какой-то специализированный контроллер?

Всё зависит от контроллера и от прерываний. А также от величины задержки. Если задержка сопоставима со временем выполнения инструкции процессора, то да, имеет смысл набить NOP-ов, или сделать пустой цикл.

Большие задержки лучше реализовывать с использованием таймеров или механизмов многопоточности/многозадачности RTOS.

Способов много, надо конкретизировать задачу

qbe
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.