Все для Sony Ericsson, патчи, эльфы, моддинг, прошивка
Логин: Пароль: Запомнить: Привет гость! Зарегистрируйся или авторизируйся для получения доп. возможностей!
Разделы
PDA версия сайта
Новости
Статьи
Файлы
Патчи
Патчи 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; 203 hits) Скачать файл
iar_tailcall_patch2.zip iar_tailcall_patch2.zip (2.45 kb; 290 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; 69 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
Репутация: 2844
Откуда: г.Владимир




 
  #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
Репутация: 2844
Откуда: г.Владимир




 
  #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.03 секунд | 11 Запросов | HTML: 39.16 КБ -