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

 
 
> исключительные ситуации
dimka76
сообщение Dec 19 2007, 06:52
Сообщение #1


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



в арме есть исключительная ситуация - ошибка данных.
Объясните пожалуйста, что это такое?


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GetSmart
сообщение Dec 19 2007, 10:03
Сообщение #2


.
******

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



В 7-ом АРМе можно без проблем читать невыровненные адреса. Делал так в LPC21xx.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
xelax
сообщение Dec 19 2007, 12:09
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035



Цитата(GetSmart @ Dec 19 2007, 13:03) *
В 7-ом АРМе можно без проблем читать невыровненные адреса. Делал так в LPC21xx.


Я бы не стал так утверждать. Например SAM7 генерирует исключения.

К стати Вы ассемблерной код смотрели такого чтения. Может просто компилятор за Вас побайтовое чтение организовал smile.gif

Цитата(Dron_Gus @ Dec 19 2007, 13:51) *
ОФФ: А что делает линух в этой ситуации? Убивает поток, вызвавший ошибку, или останавливается полностью?


Линукс по коду команды определяет что надо было сделать.

вот исходник
http://www.gelato.unsw.edu.au/lxr/source/a.../mm/alignment.c

Сообщение отредактировал xelax - Dec 19 2007, 12:00
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Dec 20 2007, 09:53
Сообщение #4


.
******

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



Цитата(xelax @ Dec 19 2007, 17:09) *
К стати Вы ассемблерной код смотрели такого чтения. Может просто компилятор за Вас побайтовое чтение организовал smile.gif

Смотрел. Компилятор понятия не имел откуда я буду читать и читал 4 байта в одной команде. При этом он читал LONG с адреса (addr & ~3) и сдвигал его вправо на ((addr & 3) << 3) бит.

Точнее сдвигал вправо по кругу. Можно сказать на (addr & 3) байт.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
xelax
сообщение Dec 20 2007, 15:37
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035



Цитата(GetSmart @ Dec 20 2007, 12:53) *
Смотрел. Компилятор понятия не имел откуда я буду читать и читал 4 байта в одной команде. При этом он читал LONG с адреса (addr & ~3) и сдвигал его вправо на ((addr & 3) << 3) бит.

Точнее сдвигал вправо по кругу. Можно сказать на (addr & 3) байт.


Почитал я мануал на 21хх, действительно про обращение по невыровненным адресам ни слова.
можно сделать вывод, что контроллер памяти разруливает такие ситуации.

Но это всё таки частный случай.
Go to the top of the page
 
+Quote Post



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

 


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


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