Все для Sony Ericsson, патчи, эльфы, моддинг, прошивка
  
Логин: Пароль: Запомнить: Привет гость! Зарегистрируйся или авторизируйся для получения доп. возможностей!
Разделы
PDA версия сайта
TrackIDentify
Новости
Статьи
Файлы
Патчи
Патчи A2
Патчи db2020
Эльфы
Исходники эльфов
Wiki
Форум
Опросы
Обратная связь
Развернуть/Свернуть
 
Развернуть/Свернуть

MOV PC,Rx : Эльфостроение : Эльфы : Форум : Для Sony Ericsson патчи эльфы моддинг прошивка
/  Список форумов
   /  Эльфы
      /  Эльфостроение
   /  MOV PC,Rx
На печать 
Правила 


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 идёт вызов функции по указателю.
компилируется такой код в такое:

Код: 
//    7 void a(FN fn)
//    8 {
//    9   fn();
??a:
        MOV      PC,R0            ;; tailcall
        CFI EndBlock cfiBlock1
//   10 }

команда MOV PC,R0 плохая, на процессорах наших телефонов она вызывает ребуты. да, не всегда, но получить проблемы более чем легко. особенно напрягает, когда ребуты случаются в разных местах, найти причину сбоев становится очень тяжело.

предлагаю вашему вниманию патчи для компиляторов IAR C/C++ 4.41 и 4.42.
после применения патча компилятор начинает генерировать такой код:

Код: 
//    7 void a(FN fn)
//    8 {
//    9   fn();
??a:
        BX       R0               ;; tailcall
        CFI EndBlock cfiBlock1
//   10 }

команда заменяется только в коде, компилируемом вами. если вы используете стандартные иаровские библиотеки, в ваш код могут попасть MOV, потому что эти библиотеки не собираются заново, а линкуются уже собранные.
в общем, если в вашем эльфе окажется MOV PC, Rx (смотреть в генерируемых листингах), и из-за этой команды у вас проблемы, будем думать. вероятно, придётся менять команды в пост-билде.



Прикрепленный к сообщению файл:

iar_tailcall_patch.zip iar_tailcall_patch.zip (4.82 kb; 184 hits) Скачать файл
iar_tailcall_patch2.zip 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 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



  • Поиск
  • Права
Вы не можете начинать темы.
Вы не можете редактировать свои сообщения.
Вы не можете создавать опросы.
Вы не можете вкладывать файлы в сообщения.
Вы не можете отвечать на сообщения.
Вы не можете удалять свои сообщения.
Вы не можете голосовать.

Главная Новости Статьи Файлы Патчи Форум Опросы PDA
- Генерация страницы: 0.14 секунд | 12 Запросов | HTML: 39.61 КБ -