ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
5 июля
1594451 Топик полностью
Zikon (Сегодня, 11:47, просмотров: 11) ответил Zikon на А чем вам не нравится стандартный линк файл от WCH который есть во всех примерах - там порядок сегментов .data / .sdata / .sbss / .bss и $gp инициализируется на начало сегмента .sdata + 0x800. И так как .sbss = .bss то при релаксации (-Wl,--relax включена по умолчанию) всё .bss доступно сразу по $gp (естественно в пределах +-2K смещения). А для использования .sdata надо задать как раз параметр -msmall-data-limit. Сегменты .sdata и .sbss рядом вместе.
А вот в известной библиотеке ch32fun очень странный линк файл по поводу $gp. Инициализация $gp - адрес сегмента .data + 0x3fc. И как это понимать? Компилятор/линкер всё равно не будут работать с данными в .data через $gp. А если хотите всё же .data прихватить - задирайте значение -msmall-data-limit, но потом не удивляйтесь что 4К быстро закончились для $gp. Стандартный вариант от WCH - более оптимальный.