ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
26 апреля
919477 Топик полностью
Nikolay_Po (05.05.2019 00:09, просмотров: 181) ответил s_h_e на Во всех остальных местах вызова чего? На каком этапе, пардон, принимается решение о замене адреса значением, компиляции модуля или линковки?
LTO? Хороший вопрос. Для начала нужно проверить моё предположение. ТС не пояснил, проверял ли он в отладке оба варианта, с константой ПЗУ и с переменной в одном исходнике, при отладке одной сборки? Так же не понятно, что не так с результатом работы кода относительно заложенного в исходник? Какие должны быть side effects икакие по факту? Действительно ли "return CRC( (uint8_t*) &my_const , 4);" даёт не верный результат? А если и не верный, то в каком месте? А то оптимизация может быть с неограниченной абстракцией. И пока не выведешь данные в реальный порт МК или не поместишь в глобальную volatile-переменную, отладкой нельзя будет оценить корректность работы кода. Нужно смотреть, один ли код используется для обоих случаев? Может быть что угодно. Например, обращение к константе в ПЗУ может настолько сильно отличаться от обращения к ОЗУ, что компилятор использует разные версии функции.