Я прочитал таблицу данных и нашел переменную, определенную как unsigned char near Sample_X
. Что это такое и чем оно отличается unsigned char Sample_X
?
12
Я прочитал таблицу данных и нашел переменную, определенную как unsigned char near Sample_X
. Что это такое и чем оно отличается unsigned char Sample_X
?
near
- пример спецификатора класса хранилища . Он сообщает компилятору о том, как или где должно быть выделено хранилище для переменной. (См. Ответ Фило ниже, чтобы узнать большеnear
).Ответы:
MCU, указанный здесь, представляет собой серию Freescale MC9C08 , в которой используется слегка улучшенная версия их архитектуры HC08. Это 8-битное ядро, которое (как и многие другие) имеет более короткие инструкции и более быстрый доступ к адресам «нулевой страницы», чем другие. Адреса нулевых страниц имеют длину всего 8 бит вместо 16 бит, поэтому ссылки на них могут составлять 2 байта вместо 3, и в результате на выполнение уходит на 1 цикл меньше .
Ключевое слово «near» указывает компилятору поместить переменную в «нулевую страницу», если это возможно, для лучшей производительности. Компиляторы, специально написанные для разработки встраиваемых систем, такие как этот , обычно реализуют такие расширения языка (здесь описывается как «Поддержка C для нулевой страницы»).
источник
register
ключевое слово (для случаев, когда вы действительно уверены, что именно здесь вам нужна оптимизация), но немного менее экстремально?В зависимости от архитектуры ЦП могут быть разные инструкции для доступа к данным по разным адресам. Вот пример из Keil для одного из их компиляторов.
Ближайший доступ имеет определенный предел памяти, поэтому вы можете дать указание компилятору разместить некоторые часто используемые переменные в области, доступной с помощью более коротких инструкций (очевидно, описание доступа к 32-разрядному адресному пространству превышает 16-разрядный адрес Космос). Это может привести к уменьшению / ускорению кода.
источник
far
иnear
указателям на основной устаревшую 8086 архитектуры. Одни и те же ключевые слова используются в связанном, но разном виде на 8-битных микроконтроллерах.