Jump to content
Old Phone Forum
  • Login

    You are currently not logged in to the forum.

    To comment, upload files, subscribe to answers - you need to login.

Recommended Posts

Например вот, при обновлённом режиме иконка life не компилируется и ошибок тоже нет.

...

icon_Life_0: .insertdata "type4\Life_0.ifg"

...

 

Ну вообще-то символ "\" в строке принято экранировать, т.е. надо так писать:

icon_Life_0: .insertdata "type4\\Life_0.ifg"

 

"\l" заменилось на новую строку, а для "\m" замены нет - осталось, как есть.

  • Like 2

5073IA3.png

Share this post


Link to post
Share on other sites

Код


.start new_text_tab
DCD	a_txt_TouchVib

.start 0x9164E000
a_txt_TouchVib:
DCB	"Touch vibration feedback"
DCB	"Âèáðîîòäà÷à ñåíñîðà"
DCB	"Âèáðîîòäà÷à ñåíñîðà"

.equ new_text_tab				0x91468C00

Результат компиляции:

+90140000
6FEC0000: 00000000
01328C00: 00E06491
0150E000: 546F75636820766962726174696F6E20666565646261636B00D092D0B8D0B1D180D0BED0BED182D0B4D0B0D187D0B020D181D0B5D0BDD181D0BED180D0B000D092D0B8D0B1D180D0BED0BED182D0B4D0B0D187D0B020D181D0B5D0BDD181D0BED180D0B000

 

Если же equ перенести в начало, то получается нормально:

.equ new_text_tab				0x91468C00

.start new_text_tab
DCD	a_txt_TouchVib

.start 0x9164E000
a_txt_TouchVib:
DCB	"Touch vibration feedback"
DCB	"Âèáðîîòäà÷à ñåíñîðà"
DCB	"Âèáðîîòäà÷à ñåíñîðà"

+90140000
01328C00: 00E06491
0150E000: 546F75636820766962726174696F6E20666565646261636B00D092D0B8D0B1D180D0BED0BED182D0B4D0B0D187D0B020D181D0B5D0BDD181D0BED180D0B000D092D0B8D0B1D180D0BED0BED182D0B4D0B0D187D0B020D181D0B5D0BDD181D0BED180D0B000

 

это прошивка C3300iXXKD1

 

Попробовал вообще без прошивки скомпилировать, аналогично получается:

00000000: 00000000
91468C00: 00E06491
9164E000: 546F75636820766962726174696F6E20666565646261636B00D092D0B8D0B1D180D0BED0BED182D0B4D0B0D187D0B020D181D0B5D0BDD181D0BED180D0B000D092D0B8D0B1D180D0BED0BED182D0B4D0B0D187D0B020D181D0B5D0BDD181D0BED180D0B000

Share this post


Link to post
Share on other sites

А компилятор знает команды LDRD, STRD?

 

LDRD

LDRD{<cond>} <Rd>, <addressing_mode 2>

Rd := [address][31:0]

Rd+1 := [address+4][31:0]

Загрузка пары регистров.

Rd должен быть четным (R0 R2 R4 R6 R8 R10 R12)

 

STRD

STRD{<cond>} <Rd>,<addressing_mode 2>

[address] [7:0] := Rd [7:0]

[address+1][7:0] := Rd [15:8]

[address+2][7:0] := Rd [23:16]

[address+3][7:0] := Rd [31:24]

[address+4][7:0] := Rd+1 [7:0]

[address+5][7:0] := Rd+1 [15:8]

[address+6][7:0] := Rd+1 [23:16]

[address+7][7:0] := Rd+1 [31:24]

Сохранение 64 разрядного числа из регистров Rd и Rd+1 в память.

Почему-то команда LDRD R8, [R4] компилируется в ORRS R8, R4, R0, а STRD R8, [R4] - в ORR R8, R4, R0...

Share this post


Link to post
Share on other sites

А компилятор знает команды LDRD, STRD?

Почему-то команда LDRD R8, [R4] компилируется в ORRS R8, R4, R0, а STRD R8, [R4] - в ORR R8, R4, R0...

Нет не знает. а из какой это спецификации? На момент разработки, таких команд не было. 64 битная арифметика не поддерживалась


Одна из последних версий binedit здесь.

AlexeyK.gif

Share this post


Link to post
Share on other sites

а можно в BinEdit починить работу с COM-портами выше 9 ?

порты менее 20 винда 8.1 что-то не хочет раздавать на BT (даже вручную - они тупо не работают), а с 10 - BinEdit не работает...

в итоге я остался без CGSN... :)

  • Like 1

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Share this post


Link to post
Share on other sites

Есть примерно такой код:

 

.align 2

table_EHK_info:

.word t_msg_not_used, mcc_lk_exit

.word t_msg_voicemail, mcc_pb_vms_idle_call_in_idle

.word t_msg_usb_mode, mcc_set_change_usb_class

table_EHK_size8 = $-table_EHK_info

.word 0, mcc_lk_exit

 

BinEdit ругается что отсутствует параметр в вычислениях…

 

Пробовал по всякому…

table_EHK_size8 = $-table_EHK_info

.equ table_EHK_size8 $-table_EHK_info

.equ table_EHK_size8 table_EHK_info_end-table_EHK_info ; сделав вторую метку в конце

 

Не получается.

Вобщем, как создать переменную которая бы указывала бы на размер данных (именно на уровне компилятора, подсчитатывать в асме не хочу) ?


Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Share this post


Link to post
Share on other sites

Есть примерно такой код:

 

.align 2

table_EHK_info:

.word t_msg_not_used, mcc_lk_exit

.word t_msg_voicemail, mcc_pb_vms_idle_call_in_idle

.word t_msg_usb_mode, mcc_set_change_usb_class

table_EHK_size8 = $-table_EHK_info

.word 0, mcc_lk_exit

 

BinEdit ругается что отсутствует параметр в вычислениях…

 

Пробовал по всякому…

table_EHK_size8 = $-table_EHK_info

.equ table_EHK_size8 $-table_EHK_info

.equ table_EHK_size8 table_EHK_info_end-table_EHK_info ; сделав вторую метку в конце

 

Не получается.

Вобщем, как создать переменную которая бы указывала бы на размер данных (именно на уровне компилятора, подсчитатывать в асме не хочу) ?

Можно попробовать так

.align 2
table_EHK_info:
.word t_msg_not_used, mcc_lk_exit
.word t_msg_voicemail, mcc_pb_vms_idle_call_in_idle
…
.word t_msg_usb_mode, mcc_set_change_usb_class
.align 1
table_EHK_info1:
table_EHK_size8 = table_EHK_info1-table_EHK_info
.word 0, mcc_lk_exit

 

Хотя у меня и начальный вариант без ошибок отработал.


Одна из последних версий binedit здесь.

AlexeyK.gif

Share this post


Link to post
Share on other sites

Не пойму, в арм-режиме команды типа

MOV R0, 0x1388

Не понимает что ли?

Ida нормально отображает, а здесь пишет Undefined

Share this post


Link to post
Share on other sites

В арм-режиме bl-переходы не находит еще на ужный мне адрес, хотя как минимум один такой переход есть

Share this post


Link to post
Share on other sites

А есть что-то подобное BinEdit но понимающее команды современного ARM, чтобы смотреть в Hex и сразу править asm-команды?

Чтобы делать патчи для андроидов…

 

Декомпилировать в IDA можно, но обратно то это не собрать.


Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Share this post


Link to post
Share on other sites

А есть ли символ или их набор, который бинедитом компилируется в хекс "0A"? А то приходится маски с его использованием переводить в хекс - не очень удобно...

Share this post


Link to post
Share on other sites

А есть ли символ или их набор, который бинедитом компилируется в хекс "0A"? А то приходится маски с его использованием переводить в хекс - не очень удобно...

.string "\L"

  • Like 1

5073IA3.png

Share this post


Link to post
Share on other sites

Моя последняя версия BinEdit, добавлена декомпиляция сценариев Agere/Infineon.

Пример .be - файла для C3322iXXNC1 есть в архиве, в папке befiles.

BinEdit.7z

  • Like 6

5073IA3.png

Share this post


Link to post
Share on other sites

Баг БинЕдит, из-за которого чуть голову не сломал в поисках ошибки в патче :128:

.start 0x8186451E

BNE 0x81864622

Компилируется в "80D1" - переход по адресу 0x81864422. Видимо, уже запредельное для команды расстояние прыжка - но при этом никаких ошибок компилятор не пишет. Компиляция прыжка на два байта дальше уже сопровождается ошибкой "Адресация команды BNE выходит за пределы допустимого".

Share this post


Link to post
Share on other sites
Видимо, уже запредельное для команды расстояние прыжка - но при этом никаких ошибок компилятор не пишет.
Я из-за этого бага в сумме наверно полмесяца потерял, в разных патчах. Авторам неоднократно сообщал, но толку нет.

При каких-то обстоятельствах на предельном прыжке проверка диапазона не работает (вероятно где-то в коде проверка границ по условиям меньше-равно ошибается на 1 шаг).

 

Ещё есть неприятный баг - иногда русская С (в составе hex-числа) компилируется без ошибок…

Edited by f2065

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Share this post


Link to post
Share on other sites

А вызовы thumb-функций из arm-кода (blx) только у меня неправильно декомпилируются? Адреса получаются на 2 байта меньше реальных. Из-за этого что есть сим-файл, что его нет - очень неудобно код изучать...

Компилируются вроде правильно...

Share this post


Link to post
Share on other sites

next:

mov r7,4

ldr r0,[sp,r7]

...

add r7,4

cmp r7,24

bcc next

 

 

При компиляции ругается на строчку с ldr: не определена переменная r7. Почему? Как реализовать?


Обожаю свою жену Анюточку! =)

Share this post


Link to post
Share on other sites

Например, вместо 

 

ldr r0,[sp,r7]

 

сделать так

 

mov r0, sp

ldr r0, [r0, r7]

Share this post


Link to post
Share on other sites

При компиляции ругается на строчку с ldr: не определена переменная r7.

Нет такой команды потому что. Это же Thumb-режим - там чтобы уложится в 2 байта только самые массовые команды есть.

 

Хинт: в Thumb есть команды типа ADD R7,SP,4 и LDMIA R7!,{R0}… Можно этот твой код существенно сократить/оптимизировать.


Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Share this post


Link to post
Share on other sites

Спасибо! Завтра испытаю :)


Обожаю свою жену Анюточку! =)

Share this post


Link to post
Share on other sites

Туплю с утра, Женя, можешь пример кода с использованием ldmia показать для упрощения прохода по циклу? Что делает команда понимаю, но как написать и использовать не могу придумать.


Обожаю свою жену Анюточку! =)

Share this post


Link to post
Share on other sites

Что делает команда понимаю, но как написать и использовать не могу придумать.

Это позволяет обойтись без add внутри цикла.

 

 

add r7, sp, 4

mov r6, 24

add r6, r7

m1:

ldmia r7!,{r0}

cmp r7, r6

bcc m1

 

Но вообще это актуально когда в цикле надо сразу читать несколько регистров.


Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Share this post


Link to post
Share on other sites

А можно несколько примеров с командой uxtb? Что она делает?

 

uxtb r0, r0.

Чтобы будет если r0 = [0, 1,2,3..,ff] ?

Спасибо!


Обожаю свою жену Анюточку! =)

Share this post


Link to post
Share on other sites

А можно несколько примеров с командой uxtb? Что она делает?

Оставляет только младшие 8 бит, а старшие 24 бита обнуляет.

На старых компиляторах вместо UXTB делали LSL 24 и LSR 24.

 

LDR R0, =0x12345678

LDR R1, =0x11223344

UXTB R0, R1

 R0 = 0x00000044

 R1 = 0x11223344

 

Это в thumb-режиме, а в arm там ещё куча разных аргументов может быть - она может делать предварительно ROR 8.

 

Ещё есть аналогичная UXTH - оставляет младшие 16 бит.

  • Like 1

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Share this post


Link to post
Share on other sites

Всем привет!

Хочу добавить в прошивку поддержку греческого языка, но при вставке в .string "" греческого текста из буфера получаю лишь .string "???????".

Это в каком направлении нужно копать? Как-то в Windows включать поддержку греческого языка? или в BinEdit подкрутить что-то?


Обожаю свою жену Анюточку! =)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...