Как сослаться на указатель на pdata или idata без использования общего указателя?

Использование Keil C51 на мишени 8051. У меня есть набор функций, которые принимают указатель на структуру. Структура будет жить только в pdata или idata. Из-за ограничений по размеру и магии отображения памяти я не могу сжать все структуры в одно и то же пространство памяти.

Когда я объявляю свой набор функций с помощью универсального указателя, размер кода существенно увеличивается. В качестве теста я объявил эти функции указателем на структуру в pdata. Когда я это делаю, мой размер кода возвращается к нормальному, но, конечно, я получаю предупреждения mspace и я буду указывать на неправильное пространство памяти всякий раз, когда я ссылаюсь на структуру из idata в функцию.

Предполагая, что предпосылка моего подхода верна, как можно позволить этим функциям принимать указатели на pdata или idata без взрыва размера кода?

Учитывая, что я могу все делать неправильно, не упускаю ли я из виду более традиционное решение этой проблемы?


person David Stover    schedule 14.06.2016    source источник
comment
Опубликуйте MCVE. и взгляните на этого человека   -  person LPs    schedule 14.06.2016


Ответы (1)


Похоже, вам нужны общие указатели.

Возможно, вам следует решить проблему размера кода с другой стороны. Какие настройки оптимизации компилятора/компоновщика вы используете?

person Jakob Buron    schedule 14.06.2016