реклама на сайте
подробности

 
 
> Пара вопросов по программированию, Стек и delay
white.wind
сообщение Jun 6 2006, 11:59
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 2-05-06
Из: Санкт-Петербург
Пользователь №: 16 707



1. Несколько раз встречал в исходниках на ассемблере двойную инициализацию стека на старте, один раз до SEI, второй сразу после. Недавно стал изучать программирование C и встретил опять, посмотрев генерируемый код. Чем может быть обусловлена двойная инициализация?

2. Мне казалось, заглянув в исходник delay, я там сразу увижу реализацию на таймере, по крайней мере возможность выбора, но там только циклы. Пож. ответветте хотя бы одним предложением почему так (неэффективно? сложно для реализации? ... ).

Сообщение отредактировал white.wind - Jun 6 2006, 12:00
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Jun 6 2006, 12:15
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(white.wind @ Jun 6 2006, 14:59) *
1. Несколько раз встречал в исходниках на ассемблере двойную инициализацию стека на старте, один раз до SEI, второй сразу после. Недавно стал изучать программирование C и встретил опять, посмотрев генерируемый код. Чем может быть обусловлена двойная инициализация?

2. Мне казалось, заглянув в исходник delay, я там сразу увижу реализацию на таймере, по крайней мере возможность выбора, но там только циклы. Пож. ответветте хотя бы одним предложением почему так (неэффективно? сложно для реализации? ... ).

1. Неизвестно. Возможно стартап слинкован из двух кусков который писали разные люди. Всегда делаю один раз. Этак можно в любой регистр по нескольку раз записывать.
2. Разработчики компилятора не имели возможности знать какой именно таймер свободен в вашем проекте, как он настроен или может он и занят но свободно одно из его прерываний. Написать универсальный код для этого невозможно. А через циклы - оно дает гарантированную задержку "не менее чем" и должно использоваться там где ошибка в задержке "плюс лапоть" некритична. Например при выводе на индикатор.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 13:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01371 секунд с 7
ELECTRONIX ©2004-2016