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

 
 
 
Reply to this topicStart new topic
> 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
jcxz
сообщение Aug 1 2014, 08:48
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



А Вы вообще понимаете что делаете???
Какие ARM и THUMB если у Вас Cortex?? Он имеет только Thumb2 и ничего более.
Go to the top of the page
 
+Quote Post
Нортон
сообщение Aug 1 2014, 08:53
Сообщение #3


Участник
*

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



Цитата(jcxz @ Aug 1 2014, 12:48) *
А Вы вообще понимаете что делаете???
Какие ARM и THUMB если у Вас Cortex?? Он имеет только Thumb2 и ничего более.


Этот участок кода:

Цитата(jcxz @ Aug 1 2014, 12:48) *
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


он не мой, это из примера, который приведен на http://infocenter.arm.com/help/index.jsp?t...c/CACHCBBJ.html к данному warning.

А мой код если надо, я тоже могу сбросить - это ассемблерная часть TNKernel, я хотел сделать простейший планировщик и убрать, то что у меня не используется - но этот warning меня смущает.

Сообщение отредактировал Нортон - Aug 1 2014, 08:54
Go to the top of the page
 
+Quote Post
ViKo
сообщение Aug 1 2014, 09:17
Сообщение #4


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Разве это ошибка? предупреждение, что добавлено два дополнительных байта, видимо, для выравнивания членов структуры, или, скорее, в вашем случае, кода.
Go to the top of the page
 
+Quote Post
Нортон
сообщение Aug 1 2014, 09:26
Сообщение #5


Участник
*

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



Цитата(ViKo @ Aug 1 2014, 13:17) *
Разве это ошибка? предупреждение, что добавлено два дополнительных байта, видимо, для выравнивания членов структуры, или, скорее, в вашем случае, кода.


Спасибо за пояснение.
Я просто именно этого и не мог понять - думал что-то важное, что может повлиять на работу. Теперь буду знать.

Да не ошибка, а warning - я там выше не правильно написал.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Aug 1 2014, 09:37
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 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
Сообщение #7


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

Группа: Свой
Сообщений: 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 Текстовая версия Сейчас: 19th July 2025 - 09:48
Рейтинг@Mail.ru


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