Перейти к содержимому


Фотография
* * * * * 1 Голосов

BinEdit и все о ней


  • Please log in to reply
951 ответов в этой теме

#941 master

master

    Временно недоступен

  • SGH Open Club
  • Сообщений: 602
  • Город:Саранск
  • Модель телефона: Samsung GT-S5260, GT-S8530

Отправлено 2016-июн-20 - 14:08

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

#942 SantaX

SantaX

    Загадочный романтик с душой индейца..

  • Специалисты S
  • Сообщений: 1 422
  • Город:Марий Эл
  • Модель телефона: Samsung G600

Отправлено 2017-окт-31 - 13:54

next:
mov r7,4
ldr r0,[sp,r7]
...
add r7,4
cmp r7,24
bcc next


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

#943 master

master

    Временно недоступен

  • SGH Open Club
  • Сообщений: 602
  • Город:Саранск
  • Модель телефона: Samsung GT-S5260, GT-S8530

Отправлено 2017-окт-31 - 15:40

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

 

ldr r0,[sp,r7]

 

сделать так

 

mov r0, sp

ldr r0, [r0, r7]



#944 f2065

f2065

    Программист

  • Администраторы ROOT
  • Сообщений: 6 994
  • Город:Russia,Moscow
  • Модель телефона: Samsung B310E, B5722, C3322, C3322i, S5610.

Отправлено 2017-окт-31 - 15:53

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

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

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

#945 SantaX

SantaX

    Загадочный романтик с душой индейца..

  • Специалисты S
  • Сообщений: 1 422
  • Город:Марий Эл
  • Модель телефона: Samsung G600

Отправлено 2017-окт-31 - 17:41

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

#946 SantaX

SantaX

    Загадочный романтик с душой индейца..

  • Специалисты S
  • Сообщений: 1 422
  • Город:Марий Эл
  • Модель телефона: Samsung G600

Отправлено 2017-ноя-01 - 05:52

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

#947 f2065

f2065

    Программист

  • Администраторы ROOT
  • Сообщений: 6 994
  • Город:Russia,Moscow
  • Модель телефона: Samsung B310E, B5722, C3322, C3322i, S5610.

Отправлено 2017-ноя-01 - 13:12

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

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


add r7, sp, 4
mov r6, 24
add r6, r7
m1:
ldmia r7!,{r0}

cmp r7, r6
bcc m1

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

#948 SantaX

SantaX

    Загадочный романтик с душой индейца..

  • Специалисты S
  • Сообщений: 1 422
  • Город:Марий Эл
  • Модель телефона: Samsung G600

Отправлено 2018-янв-09 - 10:25

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

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

#949 f2065

f2065

    Программист

  • Администраторы ROOT
  • Сообщений: 6 994
  • Город:Russia,Moscow
  • Модель телефона: Samsung B310E, B5722, C3322, C3322i, S5610.

Отправлено 2018-янв-09 - 17:18

А можно несколько примеров с командой 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 бит.


  • SantaX нравится это

#950 SantaX

SantaX

    Загадочный романтик с душой индейца..

  • Специалисты S
  • Сообщений: 1 422
  • Город:Марий Эл
  • Модель телефона: Samsung G600

Отправлено 2018-июн-20 - 06:13

Всем привет!

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

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



#951 f2065

f2065

    Программист

  • Администраторы ROOT
  • Сообщений: 6 994
  • Город:Russia,Moscow
  • Модель телефона: Samsung B310E, B5722, C3322, C3322i, S5610.

Отправлено 2018-июн-20 - 07:03

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

Логично. BinEdit ведь не работает с юникодом. Надо весь интерфейс винды переключать на греческий, чтобы в 8-битной кодировке по умолчанию был греческий (а не русский).

или в BinEdit подкрутить что-то?

Проще это вставлять не через .string, а через .HEX
Сделав в строки в блокноте, сохранив их в UTF-8, и затем HEX-редактором перенести в .asm-файлы в директивы .hex

.hex CE95CEBBCEBBCEB7CEBDCEB9CEBACF8C20CEBACEB5CEAFCEBCCEB5CEBDCEBF 00 ; "Ελληνικό κείμενο" 0x00

#952 SantaX

SantaX

    Загадочный романтик с душой индейца..

  • Специалисты S
  • Сообщений: 1 422
  • Город:Марий Эл
  • Модель телефона: Samsung G600

Отправлено 2018-июн-20 - 09:17

Спасибо! Да, так и буду поступать!




2 человек читают эту тему

0 пользователей, 2 гостей, 0 скрытых пользователей

Яндекс цитирования