На днях столкнулся с непоняткой при работе с uVision2.
Собрал проект, всё работает нормально. Исходник остался только последний.
Сравнивал бинарники двух последних версий , размер кода в которых был одинаков и увидел 3 десятка отличий. Стал разбираться и обнаружил смещение на 1 байт адресов глобальных переменных (причем не всех , а где-то начиная с середины ).
Т.е. была убрана одна переменная типа char. Дальнейшие разбирательства показали , что адреса при линковке назначаются переменным каким-то
непостижимым образом . Они не зависят от порядка объявления переменных ,
и даже не зависят от порядка появления в программе.
Но самое странное, что они зависят от.... имён переменных.
Это что глюки компилятора/линковщика или я чего-то недопонимаю ???