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

 
 
> адреса не выделенной памяти
RLC
сообщение Jan 15 2015, 07:39
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 19-11-14
Из: СПб
Пользователь №: 83 740



Использую NIOS II econom. При отладке в дебагере замечаю что сохранения данных регистров(r2,r3,ra...) просходит по адресам в памяти которые не выделял. Язык программирования "С".

То есть происходит вход в функцию и выпоняетя команда сохранения адреса возврата(stw ra,24(sp)). А SP равен 0xee4bf4c8. При этом адресное пространство RAM у меня 0x800020-0x80A000. При этом в одной и той же функции иногда сохранение происходит(адреса в котором сохраняется и не сохраняется состояние регистров разное, 0xee4bf4c8 и 0xee4c4888 ) а иногда не происходит. и при выходе из функции регитр ra(возврата из функции) равен 0, что при выполнении ret вызывает перезагрузку процесора.
Вопроса 3:
что за адреса?(предполагаю что кэш процессора)
Почему не всегда происходит сохранение?
Что с этим делать?=)

Сообщение отредактировал RLC - Jan 15 2015, 07:41
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
WitFed
сообщение Jan 16 2015, 11:49
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 271
Регистрация: 6-12-11
Из: Taganrog
Пользователь №: 68 701



У Альтеры запись в "мусорные" недопустимые адреса обычно проходит, ничего не вешая.
И чтение из них возвращает -1. Хотя лучше бы всё падало при самом первом глюке, без их наслоения.
А в С нет понятия "массив переменной длины", автоматические переменные массивов в стеке нужно объявлять на максимально возможную константную длину данных, ну или из кучи выделять динамически, если это значение неизвестно.
Очень похоже, что был "заступ" по записи за массив, а в стеке выше локальных переменных и входных параметров вообще много чего интересного сохраняется, в том числе и адреса возвратов из функций, сами значения SP после возврата -- лучше их не трогать, ибо при выходе из функции и восстановлении системных регистров может случиться, что угодно.
Go to the top of the page
 
+Quote Post



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

 


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


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