Цитата(DenisIV @ Dec 25 2008, 23:19)

типа warning: infinity loop, а вот ИАР не предупреждает, а молча делает...

Но это лирика...
Это не лирика, это где-то у вас преднамеренно отключены предупреждения (Project->Options->C/C++ compiler->Diagnostics):
Код
void Test()
{
while(1) { __no_operation();}
while(1) { __no_operation();}
}
Warning[Pe128]: loop is not reachable from preceding code D:\****\loader.cpp 75
Цитата(DenisIV @ Dec 25 2008, 23:19)

У меня (в данном случае ИАР) ругается на переменные, когда я их обзываю volatile на то, что он не может просчитать их значение, т.к. не проинициализированы.
Давайте так: Есть непонятка, выкладываете код, выкладываете полный текст предупреждения на языке оригинала, будем смотреть.
Код
volatile int a;
volatile int b;
volatile int c;
void Test()
{
int Tmp = a;
b = Tmp;
Tmp = b;
c = Tmp;
}
Done. 0 error(s), 0 warning(s)
\ In segment DATA_Z, align 4, align-sorted
72 volatile int a;
\ a:
\ 00000000 DS8 4
73 volatile int b;
\ `b`:
\ 00000004 DS8 4
74 volatile int c;
\ c:
\ 00000008 DS8 4
\ In segment CODE, align 4, keep-with-next
75 void Test()
76 {
77 int Tmp = a;
\ ??Test:
\ 00000000 0248 LDR R0,??Test_1 ;; a
\ 00000002 0168 LDR R1,[R0, #+0]
78 b = Tmp;
\ 00000004 4160 STR R1,[R0, #+0x4]
79 Tmp = b;
\ 00000006 4168 LDR R1,[R0, #+0x4]
80 c = Tmp;
\ 00000008 8160 STR R1,[R0, #+0x8]
81 }
\ 0000000A 7047 BX LR ;; return
\ ??Test_1:
\ 0000000C ........ DC32 a
Как видите, никакой ругани, делает все, как просилось.
Я могу предположить, что ругань выглядит так:
Цитата
Warning[Pa082]: undefined behavior: the order of volatile accesses is undefined in this statement D:\*****\loader.cpp 77
Но она означает вовсе не "не может проинициализировать", а "не определен порядок обращения к volatile-переменным". И вызывает его примерно такой код:
Код
int a;
volatile int b;
volatile int c;
void Test()
{
a = b + c;
}
И это предупреждение совершенно справедливо: стандарт позволяет компилятору изменять порядок вычисления подвыражений. А поскольку одно из свойств volatile-переменных состоит в том, что чтение может изменять ее значение (а таким свойством обладают многие sfr-регистры), то изменение порядка чтения двух volatile-переменных может привести к неожиданным для вас результатам. Поэтому для разрешения неоднозначности надо разделить чтения точками последовательности, т.е. ";" или оператором "запятая", введя временную переменную как я сделал в примере выше.
Но это лишь гадание.Если бы вы представили минимальный необходимый для воспроизведения ситуации код - вы бы получили более точный и быстрый ответ.
Цитата(DenisIV @ Dec 26 2008, 00:14)

Варнинги достали (>100)

Поэтому бороться надо с их причиной, а не следствием.