ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 марта
515485 Топик полностью
fk0, легенда (14.05.2014 15:09, просмотров: 81) ответил MBedder на Неужели нет опции компилятора - Large Code Memory Model?
У gcc нет. Да оно там и ни к чему. Разобрался. Всё ОК, зря паниковал. Если используется указатель на функцию, и если при компоновке функция оказывается выше 64к (т.е. чтоб заметить нужно было в тестовой программе завести массив на 64к элементов типа const char), то линкер в секцию plt размещает символ типа _function.plt и его использует вместо указателя на функцию. Секция plt размещается в доступном для 16-битных указателей месте. И в этой секции линкер размещает инструкцию br !!_function с переходом на реальный адрес. Т.е. решение аналогичное принятому для компилятора C30 и pic24. Заметил мелкий косяк -- _неинициализированные_ переменные типа const char (например) определяет через ".comm" и они попадают в bss (и далее в ОЗУ), хотя может так и надо (какой смысл в неинициализированных const переменных?) CubeSuite я не осилил. e2studio пока не смотрел и не понял, как там с компилятором в комплекте (всё ж с gcc разобраться проще, даже если документации толковой и нет).
[ZX]