|
Работа с опреативной памятью в AVR ASM |
|
|
|
Jan 26 2011, 06:57
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(_Pasha @ Jan 26 2011, 10:53)  Это было 100 лет назад. До крызыса  Сейчас уже такой баги нетути. Я что-то вообще о такой баге не слышал, да и встречать не приходилось. Или я не там ходил?
|
|
|
|
|
Jan 26 2011, 07:13
|
Участник

Группа: Участник
Сообщений: 46
Регистрация: 19-11-08
Пользователь №: 41 782

|
Bill Да причём тут целостность инструкции! Уже второй пост.Кому вы что об'ясняете? Речь шла о том, что после постинкремента - уход по прерыванию , и сколько X не пушируй , он всё равно "сломается". И было указано , что с мерами предосторожностями нужно работать только с 16-ти битными регистрами ВВ , а не с XYZ. Цитата(нечитатель @ Jan 26 2011, 03:54)  Не считая полезным занятием переписывание собственными словами документа "AVR Instruction Set", обратил бы внимание на: Код ldi XH, high(addr) ldi XL, low(addr) cli ; !!! ld R16, X+ ld R17, X sei ; !!! В том смысле, что если после ld R16, X+ произойдёт прерывание - после возврата из него XH и (или?) XL испортятся. Даже если попытано их сохранять/восстановлять в процедуре обработки прерывания. Где-то умнее излагается о, но ссылку либо название затрудняюсь.
Сообщение отредактировал OlegNZH - Jan 26 2011, 07:18
|
|
|
|
|
Jan 26 2011, 07:15
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(OlegNZH @ Jan 26 2011, 11:13)  Bill Да причём тут целостность инструкции! Уже второй пост.Кому вы что об'ясняете? Речь шла о том, что после постинкремента - уход по прерыванию , и сколько X не пушируй , он всё равно "сломается". Что значит "сломается"?
|
|
|
|
|
Jan 26 2011, 07:44
|
Участник

Группа: Участник
Сообщений: 46
Регистрация: 19-11-08
Пользователь №: 41 782

|
Цитата(_Bill @ Jan 26 2011, 10:15)  Что значит "сломается"? Вот и я про то-же.(Вы шуток не понимаете  ) . В оригинале: "...В том смысле, что если после ld R16, X+ произойдёт прерывание - после возврата из него XH и (или?) XL испортятся..."
|
|
|
|
|
Jan 26 2011, 07:49
|

Профессионал
    
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339

|
Цитата(OlegNZH @ Jan 26 2011, 10:13)  Bill Речь шла о том, что после постинкремента - уход по прерыванию Насколько понятно из Ваших слов это после этого Код ld R16, X+ Тогда не прокатывает вторая часть фразы- Цитата уход по прерыванию Никуда он там не уйдёт , пока не выполнит Код ld R17, X sei И как же надо написать обработчик прерывания , что бы убить не только регистры XL и XH , но и найти в стеке ячейки с их даными и там их
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Jan 26 2011, 08:31
|
Участник

Группа: Участник
Сообщений: 46
Регистрация: 19-11-08
Пользователь №: 41 782

|
О,господи..... Вы мой пост #27 прочитайте. (и #26 V_G)
Сообщение отредактировал OlegNZH - Jan 26 2011, 08:33
|
|
|
|
|
Jan 26 2011, 09:51
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(OlegNZH @ Jan 26 2011, 12:31)  О,господи..... Вы мой пост #27 прочитайте. (и #26 V_G) Прошу прощения. Сразу не понял. Случай из жизни (немного не в тему). Как-то, еще во время учебы в институте, стоим на перемене, разговариваем, анекдоты травим. Рассказали анекдот, все посмеялись, звонок, все вернулись в аудиторию. Идет занятие. Вдруг по середине занятия раздается громкое "Гы-гы-гы!". Мы все дружно оглядываемся и удивленно-вопросительно смотрим на гогочущего. Тот удовлетворенно - "Дошло!". После этого заржали все остальные. Естественно, преподаватель так ничего и не понял.
|
|
|
|
|
Jan 26 2011, 13:01
|

Профессионал
    
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339

|
Цитата(OlegNZH @ Jan 26 2011, 11:31)  О,господи..... Вы мой пост #27 прочитайте. (и #26 V_G) Прочёл: Цитата ну во-первых , после ld R16, X+ прерывание не может произойти На что Вам правда уже ответитли - можетК тому же эта фраза отличается от Цитата Речь шла о том, что после постинкремента - уход по прерыванию на которую Вам я и ответил
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Jan 26 2011, 19:52
|
Местный
  
Группа: Участник
Сообщений: 235
Регистрация: 20-11-10
Пользователь №: 61 032

|
Цитата(_Pasha @ Jan 26 2011, 09:53)  Это было 100 лет назад. До крызыса :) Сейчас уже такой баги нетути. С этого места заинтересовало. Бага была в чём конкретно и в какой момент перестала быть? Популярное развлечение в плане для себя лично: забыть cli + sei вокруг её, танцевать с бубном на ровном месте. Если не забыть - тогда и не танцевать, но после крызиса это как-то иначе теперь решать прилично мало ли вдруг. Теоретические рассуждения читать интересно (особенно писать, наверное), а литературным языком описание так и не вспомнил я где. --- К выступающим есть предложение не стараться делать так. Оно даже и в правилах отдельной строкой прописано.
|
|
|
|
|
Jan 27 2011, 04:32
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(нечитатель @ Jan 26 2011, 23:52)  С этого места заинтересовало. Бага была в чём конкретно и в какой момент перестала быть? Первые эрраты на АТ90S2313 что-то подобное содержали, но это было так давно, что не помню, касалось ли это LD/ST , но LDS/STS - однозначно, типо такая конструкция Код sbrc r0,0 lds r1, ADDR с разрешенными прерываниями, является багонеустойчивой
|
|
|
|
|
Jan 27 2011, 09:19
|
Участник

Группа: Участник
Сообщений: 46
Регистрация: 19-11-08
Пользователь №: 41 782

|
Цитата(_Pasha @ Jan 27 2011, 07:32)  Первые эрраты на АТ90S2313 что-то подобное содержали, но это было так давно, что не помню, касалось ли это LD/ST , но LDS/STS - однозначно, типо такая конструкция Код sbrc r0,0 lds r1, ADDR с разрешенными прерываниями, является багонеустойчивой
Эскизы прикрепленных изображений
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|