реклама на сайте
подробности

 
 
> Помогите разобрать кусок ассемблерного кода
SashaBe
сообщение Mar 15 2016, 13:44
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 7-10-07
Пользователь №: 31 138



Добрый день.

Есть кусок ассемеблерного кода для ARM:

...
00 LDRB R4, [R0,#6]
01 MOV R4, R4,LSL#8
02 SUB R3, R4, #0xFF00
03 SUBS R3, R3, #0xFF
04 BXNE LR
05 LDR R4, =0x4000001A
...

В регистре R4 я получаю некий указатель.
Глядя на операторы LDRB и MOV у меня закрадываются смутные сомнения, что на инструкции 04 всегда будет выполняться условие выхода из функции, т.к.
LDRB вычитывает только один байт, который после сдвига влево на 8 всегда будет 0xNN00 и при вычитании из него 0xFF00, а затем 0xFF никогда не останется нулевым.

Подскажите, верно ли я понимаю этот кусок?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
aaarrr
сообщение Mar 15 2016, 14:55
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



В R3 в любом случае окажется ненулевое отрицательное число, так что выходить по BXNE будет всегда.
Go to the top of the page
 
+Quote Post
SashaBe
сообщение Mar 15 2016, 19:33
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 7-10-07
Пользователь №: 31 138



Цитата(aaarrr @ Mar 15 2016, 20:55) *
В R3 в любом случае окажется ненулевое отрицательное число, так что выходить по BXNE будет всегда.


Спасибо, а то я думал, может я что-то не понимаю. Выходит, теряется смысл всего дальнейшего текста функции.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 02:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01386 секунд с 7
ELECTRONIX ©2004-2016