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

 
 
> Push/Pop неверно выполняется
Dron_Gus
сообщение Nov 11 2011, 14:19
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Есть ядро arm1176jzf-s внутри s3c6410.
Суть проблемы: групповой pop отрабатывает неверно. Выяснилось, когда начал разбираться почему после вызова функции портится локальный указатель. Оказалось неверно восстанавливается из стека.
При этом
Код
    push {r0, r1, r2, r3, r4, r5}
    pop {r0, r1, r2, r3, r4, r5}

Работает на ура. А вот:
Код
    push {r4, r5, r6, r7, r10, lr}
    pop {r4, r5, r6, r7, r10, pc}

Уже не работает как надо. Делаем push {r4, r5, r6, r7, r10, lr}:
Код
r4             0x57f7a000    1475846144
r5             0x57e77f70    1474789232
r6             0x57f7a000    1475846144
r7             0x2    2
...
r10            0x57039a10    1459853840
...
lr             0x570001a8    1459618216
pc             0x570001b4    0x570001b4 <clbss_l+36>

После pop {r4, r5, r6, r7, r10, pc}:
Код
r4             0x57f7a000    1475846144
r5             0x57e77f70    1474789232
r6             0x57039a10    1459853840
r7             0x570001a8    1459618216
...
r10            0x57f7a000    1475846144
...
lr             0x570001a8    1459618216
pc             0x570001a8    0x570001a8 <clbss_l+24>

Порча стека исключена - иструкции идут друг за другом, прерывания выключены.
Стэк после push (после pop остается прежним):
Код
0x57e77f28:    0x57f7a000    0x57e77f70    0x57f7a000    0x00000002
0x57e77f38:    0x57039a10    0x570001a8    0xffffffff    0xffffffff
0x57e77f48:    0x57f7a000    0x57e77f70


Что я забыл? Где посмотреть? Память проинициализирована верно, вроде как. Приложение до падения успевает отработать много кода с интенсивными обращениями к памяти.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 16:57
Рейтинг@Mail.ru


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