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

 
 
> Вектора кривоваты?, или руки? ^^'
cerebral
сообщение Mar 12 2011, 20:10
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 8-01-09
Из: 52
Пользователь №: 43 040



Всем привет.

Ковырялся я тут на днях с эклипсом, gdb и stm'кой. Обратил внимание на такую странность - векторы прерываний указывают на обработчики прерываний+1. Как-то это неправильно, что-ли. Кто-нибудь сталкивался с таким явлением?

Пруф:


Во вложении проект.
Прикрепленные файлы
Прикрепленный файл  to.7z ( 44.86 килобайт ) Кол-во скачиваний: 17
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
GetSmart
сообщение Mar 12 2011, 21:57
Сообщение #2


.
******

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



Тогда уж мозг кривоват. Потому как не читает доки на то, с чем работает. Кортексы работают в системе команд Thumb и Thumb-2, для идентификации этого режима используется младший бит в PC (R15). В том числе и в указателях на Thumb-код.


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


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 8-01-09
Из: 52
Пользователь №: 43 040



GetSmart, большое спасибо. С мозгом, да, в последнее время не в ладах) Тороплюсь очень.
Go to the top of the page
 
+Quote Post
blackfin
сообщение Mar 12 2011, 23:59
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(cerebral @ Mar 12 2011, 23:10) *
Обратил внимание на такую странность - векторы прерываний указывают на обработчики прерываний+1.

Off-topic, конечно, но..

До сих пор не могу избавиться от чувства неловкости при употреблении выражения - "вектора прерываний"..

В самом деле, если есть два "вектора прерываний", их можно складывать друг с другом, находить их скалярное произведение, вычислять модуль каждого из них.. "Удивительное рядом, но оно запрещено.."
Go to the top of the page
 
+Quote Post
cerebral
сообщение Mar 13 2011, 07:59
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 8-01-09
Из: 52
Пользователь №: 43 040



Цитата(blackfin @ Mar 13 2011, 02:59) *
... складывать друг с другом, находить их скалярное произведение, вычислять модуль каждого из них..."


И, кстати, два вектора - эт уже почти векторное поле wink.gif

Продолжу задавать глупые вопросы.


Это кто мог так нашалить? Причём у IDA на этот счёт совсем другое мнение:





и выглядит оно гораздо правдоподобнее.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Mar 13 2011, 16:44
Сообщение #6


.
******

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



файлы разные


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
cerebral
сообщение Mar 14 2011, 08:47
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 8-01-09
Из: 52
Пользователь №: 43 040



Цитата(GetSmart @ Mar 13 2011, 19:44) *
файлы разные


Невозможно. Проверил тоько что.





CODE
./exe/3-Channel.elf: file format elf32-littlearm

Disassembly of section .text:

...
0800013c <OS_Start>:
800013c: 490b ldr r1, [pc, #44] ; (800016c <loop+0xe>)
800013e: 4a0c ldr r2, [pc, #48] ; (8000170 <loop+0x12>)
8000140: 700a strb r2, [r1, #0]
8000142: 490c ldr r1, [pc, #48] ; (8000174 <loop+0x16>)
8000144: 4a0a ldr r2, [pc, #40] ; (8000170 <loop+0x12>)
8000146: 700a strb r2, [r1, #0]
8000148: 490b ldr r1, [pc, #44] ; (8000178 <loop+0x1a>)
800014a: 4a0c ldr r2, [pc, #48] ; (800017c <loop+0x1e>)
800014c: 600a str r2, [r1, #0]
800014e: 4602 mov r2, r0
8000150: 2000 movs r0, #0
8000152: f380 8809 msr PSP, r0
8000156: 480a ldr r0, [pc, #40] ; (8000180 <loop+0x22>)
8000158: 490a ldr r1, [pc, #40] ; (8000184 <loop+0x26>)
800015a: 6001 str r1, [r0, #0]
800015c: b662 cpsie i
...

08000428 <Reset_Handler>:
8000428: 4668 mov r0, sp
800042a: f020 0107 bic.w r1, r0, #7
800042e: 468d mov sp, r1
8000430: b501 push {r0, lr}
8000432: f7ff ffc9 bl 80003c8 <__Init_Data>
8000436: f7ff fea7 bl 8000188 <main>
800043a: e8bd 4001 ldmia.w sp!, {r0, lr}
800043e: 4685 mov sp, r0
8000440: 4770 bx lr
8000442: bf00 nop


Если судить по стеку процесса, аппликуха работает как надо, несмотря на указывающие непонятно куда вектора. Мне кажется, всё дело в отладчике. Похоже, он передаёт в эклипс неверные значения. Как таким отлаживаться? 05.gif

Go to the top of the page
 
+Quote Post

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

 


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


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