DASM полностью прав!!! НЕ МОЖЕТ компилятор положить массив в памяти с дырками! Это противоречит всем законам языка. Я имею полное право сделать так:
Код
uchar test[10];
void test {
char *ptr;
//Классический вариант:
ptr = test + 5;
//А теперь так:
ptr = (uchar*)((void*)test + 5 * sizeof(uchar));
//И вот так:
ptr = (uchar*)((int)test + 5 * sizeof(uchar));
Кто покажет мне (и DASM'у) хоть один компилятор, у которого эти три варианта будут не одинаковы???
Хочу сказать отдельное спасибо Alex03 за правильное предупреждение, т.к. доступ через указатель к переменной, не выровненной по умолчанию на архитектуре АРМ может работать некорректно. Я с этим еще не сталкивался, но словив такой глюк, можно долго проблемы разгребать