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

 
 
> Warning[Pa082]: undefined behavior: the order of v, архитектура / асм 430-х
ig_z
сообщение Dec 24 2004, 14:05
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551



Исходные данные:
имеем обработчик
Код
#pragma vector=PORT1_VECTOR
__interrupt void PORT1ISR(void)
{
 KbDrvTask.SendEv(P1IFG,P1IES);
 P1IES ^= P1IFG;
 P1IFG = 0;
}

После компиляции получаем ворнинг
Warning[Pa082]: undefined behavior: the order of volatile accesses is undefined in this statement

на строки
KbDrvTask.SendEv(P1IFG,P1IES);
P1IES ^= P1IFG;

В листинге все выглядит красиво
Код
   151          __interrupt void PORT1ISR(void)
  \                     ??PORT1ISR:
   152          {
  \   000000   0D12                 PUSH.W  R13
  \   000002   0C12                 PUSH.W  R12
  \   000004   0F12                 PUSH.W  R15
  \   000006   0E12                 PUSH.W  R14
   153            KbDrvTask.SendEv(P1IFG,P1IES);
  \   000008   52122400             PUSH.B  &0x24
  \   00000C   5E422300             MOV.B   &0x23, R14
  \   000010   3C40....             MOV.W   #KbDrvTask, R12
  \   000014   B012....             CALL    #??SendEv
   154            P1IES ^= P1IFG;
  \   000018   D2E223002400         XOR.B   &0x23, &0x24
   155            P1IFG = 0;
  \   00001E   C2432300             MOV.B   #0x0, &0x23
   156          }
  \   000022   2153                 ADD.W   #0x2, SP
  \   000024   3E41                 POP.W   R14
  \   000026   3F41                 POP.W   R15
  \   000028   3C41                 POP.W   R12
  \   00002A   3D41                 POP.W   R13
  \   00002C   0013                 RETI


и в железе работает правильно, но неприятный осадок остался smile.gif
Кто нибудь может объяснить смысл ворнинга "порядок доступов к волатайлам неопределен"
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aspID
сообщение Sep 11 2007, 06:19
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 343
Регистрация: 24-01-07
Из: Новосибирск
Пользователь №: 24 714



Подниму старую темку...
У меня на АВР то же самое:

Цитата
Warning[Pa082]: undefined behavior: the order of volatile accesses is undefined in this statement C:\asp_Projects\Temp\Source\main.cpp 172



Код
//main.cpp
#include <iotiny2313.h>
#include <asp/OW.h>
...
main()
{
...
  [b]OW_Basic q( DDRD, PORTD, PD2 );[/b]
...
}

Код
//OW.h
...
OW_Basic :: OW_Basic ( unsigned char cDDRAddr,
                      unsigned char cPortAddr,
                      unsigned char cMask )
{
  this->cDDRAddr = cDDRAddr;
  this->cPortAddr = cPortAddr;
  this->cMask = ( 1 << cMask );
}
...


Ругается на выделенную строку. Поскольку DDRD, PORTD, PD2 жестко определены не понимаю, в чем дело.

Сообщение отредактировал aspID - Sep 11 2007, 06:20
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 15:57
Рейтинг@Mail.ru


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