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

 
 
> Cortex-m3 assembler - что значит этот warning?, Вопрос
Нортон
сообщение Aug 1 2014, 08:07
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 9-04-11
Пользователь №: 64 246



Здравствуйте.

Такой вопрос - что означает эта ошибка "A1581W: Added 2 bytes of padding at address 0xb2"?

У меня МК STM32, компилятор keil, если это поможет.

Возникает эта ошибка при удалении, казалось-бы не нужного и нигде не используемого, части кода в ассемблерной части программы.

google ответил - http://infocenter.arm.com/help/index.jsp?t...c/CACHCBBJ.html, но я ничего не понял:

Added <no_padbytes> bytes of padding at address <address>

The assembler warns by default when padding bytes are added to the generated code. This occurs whenever an instruction/directive is used at an address that requires a higher alignment, for example, to ensure ARM instructions start on a four-byte boundary after some Thumb instructions, or where there is a DCB followed by DCD.

For example:
AREA Test, CODE, READONLY
THUMB
ThumbCode
MOVS r0, #1
ADR r1, ARMProg
BX r1
; ALIGN ; <<< add to avoid the first warning
ARM
ARMProg
ADD r0,r0,#1
BX LR
DCB 0xFF
DCD 0x1234
END

Results in the warnings: A1581W: Added 2 bytes of padding at address 0x6

The warning can also occur when using ADR in Thumb-only code. The ADR Thumb pseudo-instruction can only load addresses that are word aligned, but a label within Thumb code might not be word aligned. Use ALIGN to ensure four-byte alignment of an address within Thumb code.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Aug 1 2014, 09:37
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Практически любое предупреждение - указание на потенциальные грабли. Если оно появилось, значит была попытка чесать левое ухо правой ногой, которую компилятор/ассемблер/линкер может неправильно понять исхдя их своего чувства прекрасного. Покажите свой код. Если вылезло предупреждение - значит что-то в коде не так, даже если сейчас все работает как задумано. И лучше устранить причину этого предупреждения сразу, ибо через какое-то время вы либо утонете в подобных предупреждениях не заметив какое-либо критически важное, либо же из-за изменения положения звезд на небе эта конструкция таки начнет работать неправильно, и в этом случае инструментарий будет абсолютно не виноват - он честно предупреждал.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Forger
сообщение Aug 2 2014, 19:10
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(Сергей Борщ @ Aug 1 2014, 13:37) *
... и в этом случае инструментарий будет абсолютно не виноват - он честно предупреждал.

Я полностью вас поддерживаю, но в данном случае это все тщетно - ТС должен самостоятельно наступить на кучу граблей, которые сам же себе и расставляет....
Остается только посочувствовать, но вмешиваться нельзя sm.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post



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

 


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


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