Hello, All!
Работаю я с Rowley Crossstutio, (gcc испльзуется в ней в качестве компилятора) и вдруг мне перестало хватать ОЗУ, хотя, по моим оценкам, до этого еще должно быть далеко. Стал я смотреть в чем дело и ужаснулся. Сделал маленький тестовый фрагмент и прошу его прокоментировать, особенно тех, кто использует gcc. Опишу, что я делаю: ================ тестовый файл ===================== unsigned char uc; unsigned short us; unsigned long ul;
int main() { return 0; } ====================================================
===== так я его компилирую - линкую ================ gcc -nostdlib -march=armv4t -mlittle-endian -S test.c gcc -nostdlib -march=armv4t -mlittle-endian -c test.c ld -nostdlib -e0 --omagic -EL -Tldscript.tmp -o test.elf -M test.o ====================================================
============= смотрю test.s ======================== ... .comm uc, 1, 8 .comm us, 2, 16 .comm ul, 4, 32 ... ====================================================
Проблема в том, что третья цифра, судя по htlp-у, это выравнивание символа в _байтах_, а здесь, похоже, на "в битах". Но линкер тоже считает, что в байтах:
============== это результат работы линкера ======= ... COMMON 0x40000360 0x29 test.o 0x0 (size before relaxing) 0x40000360 us 0x40000380 ul 0x40000388 uc ... ====================================================
gcc version 3.3.3
И главный вопрос: "Что делать?"
With best regards, Leha Bishletov. E-mail: snipped-for-privacy@rol.ru