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


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

BinEdit и все о ней


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

#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 420
  • Город:Марий Эл
  • Модель телефона: 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 922
  • Город: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 420
  • Город:Марий Эл
  • Модель телефона: Samsung G600

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

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

#946 SantaX

SantaX

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

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

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

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

#947 f2065

f2065

    Программист

  • Администраторы ROOT
  • Сообщений: 6 922
  • Город: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 420
  • Город:Марий Эл
  • Модель телефона: Samsung G600

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

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

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

#949 f2065

f2065

    Программист

  • Администраторы ROOT
  • Сообщений: 6 922
  • Город: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 нравится это




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

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


    BrandWatch (9)

Титан гель отзывы на http://fabri.com.ua/titangel.html


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