Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите разобрать кусок ассемблерного кода
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
SashaBe
Добрый день.

Есть кусок ассемеблерного кода для 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 никогда не останется нулевым.

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


Спасибо, а то я думал, может я что-то не понимаю. Выходит, теряется смысл всего дальнейшего текста функции.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.