ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
1060410 Топик полностью
il-2 (13.12.2020 13:51, просмотров: 560) ответил POV_ на Не вполне понял что там с С99 (?) и keil51...
Т.к. в 51-й архитектуре нет эффективных инструкций для работы с ОЗУ по относительным адресам, то для размещения локальных переменных по абсолютным адресам компилятор-линкер C51 от кейл использует механизм Data Overlay. 

При компиляции строится дерево вызовов функций, и по нему размещаются локальные переменные функций так, чтобы они не перекрывались. Однако компилятор при построении дерева вызовов ничего не знает о том, какие функции ты вызываешь своим каллбаком. Полученное дерево вызовов нужно скорректировать вручную, для этого существуют директивы линкера. Какие - я уже не помню за давностью лет.

ЗЫ: У меня четкое дежа-вю, что я отвечаю на данный вопрос именно тебе уже не первый и не второй раз.