Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: BLX бывает без регистра?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
jcxz
Только что наступил на странный баг(?) IAR.
IAR начал генерить код, в котором стали встречаться инструкции типа: BLX <метка>, где метка - собсно метка (адрес), НЕ РЕГИСТР!!!
Справился с системой команд на ядро Cortex-M3 - там инструкция BLX упоминается только в формате с регистром, никаких других вариантов нет.
Да и вообще - причём тут косвенная адресация??? Вызов функции идёт из cpp-файла обычным образом (не косвенно, никаких указателей или виртуальных член-функций).
Позже обнаружил причину - эта функция определена в asm-файле и стоит после директивы DATA с данными и LTORG, а перед ней забыл указать THUMB.
Причём IAR нормально это съел, даже варнинга не выдал и сгенерил полную чушь.
Конечно при выполнеии этого BLX управление улетает в тартарары.
IAR6.50
KRS
Цитата(jcxz @ Jan 28 2014, 12:10) *
BLX <метка>, где метка - собсно метка (адрес), НЕ РЕГИСТР!!!

такая инструкция есть начиная с ARMv5 (т.е. в ARM7TDMI ее нет).
Но и ARMv6m и ARMv7m ее нет! А обычная инструкция BLX приводит к exception!
И это не косвенная адресация, а переход с возможной сменой режима ARM<->THUMB.
У вас где то в опциях ассемблера или компилятора не то ядро стоит!

В асм надо ставить THUMB обязательно! Причем именно THUMB, CODE16 не позволит все инструкции использовать!
jcxz
Цитата(KRS @ Jan 29 2014, 11:58) *
У вас где то в опциях ассемблера или компилятора не то ядро стоит!

Ядро стоит правильное (Cortex-M3), я это первым делом проверил.

Цитата(KRS @ Jan 29 2014, 11:58) *
В асм надо ставить THUMB обязательно! Причем именно THUMB, CODE16 не позволит все инструкции использовать!

Я это знаю. THUMB было пропущено по недогляду при редактировании. Но весь вопрос в том - почему IAR это съел без всяких
претензий и накомпилил чушь???
Причём в lst-файле на этом месте указано: BL <метка> smile3046.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.