| |
|
den_po
Developer/Admin
Регистрация: 27.3.06 Сообщений: 3279 Репутация: 10763 Откуда: Чебоксары
|
#1 [30.07.09, 14:08] MOV PC,Rx
есть у иаровского компилятора c/c++ одна неприятная фича, заключается она в оптимизации. сама по себе оптимизация это хорошо, но вот в данном конкретном случае может давать весьма неприятный результат. всё дело в оптимизации переходов. небольшой пример. Код: typedef void (*FN)();
void a(FN fn) { fn(); }
тут внутри функции a идёт вызов функции по указателю. компилируется такой код в такое: команда MOV PC,R0 плохая, на процессорах наших телефонов она вызывает ребуты. да, не всегда, но получить проблемы более чем легко. особенно напрягает, когда ребуты случаются в разных местах, найти причину сбоев становится очень тяжело. предлагаю вашему вниманию патчи для компиляторов IAR C/C++ 4.41 и 4.42. после применения патча компилятор начинает генерировать такой код: команда заменяется только в коде, компилируемом вами. если вы используете стандартные иаровские библиотеки, в ваш код могут попасть MOV, потому что эти библиотеки не собираются заново, а линкуются уже собранные. в общем, если в вашем эльфе окажется MOV PC, Rx (смотреть в генерируемых листингах), и из-за этой команды у вас проблемы, будем думать. вероятно, придётся менять команды в пост-билде.
Прикрепленный к сообщению файл: iar_tailcall_patch.zip ( 4.82 kb; 184 hits) Скачать файл iar_tailcall_patch2.zip ( 2.45 kb; 271 hits) Скачать файл
promt is better than google translate
|
Спасибо сказали: Crong, MaPkiZzz, lisaus, JohnNorth, Va_st, Mojsa, Xamid, ploik, GanGSISoft, 273308715, Pharaon, avens, CTFMoN, farid
|
den_po
Developer/Admin
Регистрация: 27.3.06 Сообщений: 3279 Репутация: 10763 Откуда: Чебоксары
|
#2 [18.08.09, 01:22] Re: MOV PC,Rx
вторая версия. только для 4.42 (ну не пользуюсь я 4.41). ещё больше замен.
иногда ребут бывает при смене режимов thumb->arm, если возврат из функции делается командой POP {..., PC}, причём, если код в эльфе мы исправить можем, в прошивке оно всё равно останется неисправленным. не знаю, что с таким делать. свою проблему я решил использованием thumb, но эльфы активно используют swi, там тумбой не обойтись.
promt is better than google translate
|
BigHercules
Elfmaker
Регистрация: 19.1.07 Сообщений: 246 Репутация: 1925 Откуда: Воронеж
|
#3 [05.10.10, 16:39] Re: MOV PC,Rx
den_po писал: вторая версия. только для 4.42 Привет! А можно сделять патч для компилятора версии 4.42.1.501 ? Заранее спасибо.
SЕ K790i R8BF003 CID52
|
den_po
Developer/Admin
Регистрация: 27.3.06 Сообщений: 3279 Репутация: 10763 Откуда: Чебоксары
|
#4 [05.10.10, 16:45] Re: MOV PC,Rx
BigHercules, это надо экзешник iccarm.exe надыбать и портировать
promt is better than google translate
|
BigHercules
Elfmaker
Регистрация: 19.1.07 Сообщений: 246 Репутация: 1925 Откуда: Воронеж
|
#5 [05.10.10, 16:56] Re: MOV PC,Rx
den_po пишет: BigHercules, это надо экзешник iccarm.exe надыбать и портировать Вот портировал для компилятора версии 4.42.1.501 [ Редактировано BigHercules в 14.10.10 18:12 ]
Прикрепленный к сообщению файл: patch_iar4.42.1.501_v2.zip ( 591.52 kb; 68 hits) Скачать файл
SЕ K790i R8BF003 CID52
|
Спасибо сказали: Neodzen
|
IDOL1234
Пользователь
Регистрация: 29.3.11 Сообщений: 113 Репутация: 1 Откуда: СПб
|
#6 [01.11.11, 12:04] Re: MOV PC,Rx
А почему ребутит-то? Да ещё и не всегда? Причина известна? А то на какое-то колдунство похоже..
пшшшшшшшшшшшшшш!
|
awg
Patcher/Moder
Регистрация: 10.1.08 Сообщений: 604 Репутация: 2795 Откуда: г.Владимир
|
#7 [01.11.11, 13:19] Re: MOV PC,Rx
ты чото очень много вопросов задаешь, не выкурив пару тройку сигарет, пытая гугл и т.д. и т.п.
что за напор такой, от твоих вопросов подташнивать начинает ))
К550->W610->K700->C901->Xperia Sola->Meizu MX2->Meizu M3 Note->Xiaomi Redmi Note 4x (Mido)->Redmi Note 7Pro (Violet)
|
Спасибо сказали: MAVER145, Karasyov, den_po, MrGraL
|
IDOL1234
Пользователь
Регистрация: 29.3.11 Сообщений: 113 Репутация: 1 Откуда: СПб
|
#8 [02.11.11, 00:30] Re: MOV PC,Rx
Хм. Не курю. patch_iar4.42.1.501_v2.zip сообщает, что IAR не найден iar_tailcall_patch2.zip, согласно моему антивирусу, является трояном. Можно ли как-нибудь избавиться от этого магического ребута, не прибегая к переустановке IAR и к помощи вирусов?
пшшшшшшшшшшшшшш!
|
'Фу' сказали: den_po, Joker XT, MrGraL, E1kolyan, Nook, farid |
awg
Patcher/Moder
Регистрация: 10.1.08 Сообщений: 604 Репутация: 2795 Откуда: г.Владимир
|
#9 [02.11.11, 13:17] Re: MOV PC,Rx
ну вот как так можно? я удивляюсь!
но коменс
К550->W610->K700->C901->Xperia Sola->Meizu MX2->Meizu M3 Note->Xiaomi Redmi Note 4x (Mido)->Redmi Note 7Pro (Violet)
|
Спасибо сказали: MaxxxS, IDOL1234
|
Вы не можете начинать темы. Вы не можете редактировать свои сообщения. Вы не можете создавать опросы. Вы не можете вкладывать файлы в сообщения. Вы не можете отвечать на сообщения. Вы не можете удалять свои сообщения. Вы не можете голосовать.
|
|
|