Оптимизация при компиляции или особенность адресации Code ключей?
Прошу прощения, если вопрос окажется не совсем по теме ключей.
Я решил посмотреть как срабатывает Out of memory, и можно ли загружать RAM ключа "до упора". Написал такую тестовую программку для загружаемого кода:
extern struct
{
BYTE abRWBuff[256];
} iodata ALIGNED;
int f1 (int q); // прототип
int f1 (int q)
{
volatile int i;
char b[99000]; // Массив больше предусмотренной памяти
b[98777] = 100; // Пишем по адресу, который выходит за размер RAM
GcaLedOff(0);
for (i = 0; i < 900000; i++); // Все хорошо - Подмигиваем
GcaLedOn(0);
return (b[98777] + q); // Возврат (100+q)
}
DWORD main(DWORD dwInDataLng, DWORD dwOutDataLng, DWORD dwP1)
{
return f1(7); // Возврат значения 107
}
Как оказалось, данная программа успешно выполняется.
Это связано с тем, что компилятор как-то оптимизирует исходный код, или с какими-то особенностями внутренней кухни Code-ключа?