Что такое «неподписанный символ рядом»?

Я прочитал таблицу данных , и я нашел переменную, определенную как unsigned char near Sample_X. Что это такое и как это отличается от unsigned char Sample_X?

12 голосов | спросил oppo 16 PMpMon, 16 Apr 2018 14:35:52 +030035Monday 2018, 14:35:52

2 ответа


20

MCU, указанный здесь, представляет собой Freescale MC9C08 series , который использует немного улучшенную версию своей архитектуры HC08. Это 8-битное ядро, которое (как и многие другие) имеет более короткие инструкции и более быстрый доступ к адресам «нулевой страницы», чем другие. Адреса нулевой страницы составляют всего 8 бит вместо 16 бит, поэтому инструкции, ссылающиеся на них могут быть 2 байтами вместо 3 , и в результате выполните в течение 1 цикла меньше .

Ключевое слово «near» инструктирует компилятор поставить эту переменную на «нулевую страницу», если это возможно, для лучшей производительности. Компиляторы, специально написанные для встроенной разработки, такие как этот , обычно используют такие расширения для языка (здесь описывается как «C Поддержка нулевой страницы»).

ответил Chromatix 16 PMpMon, 16 Apr 2018 18:25:54 +030025Monday 2018, 18:25:54
15

В зависимости от архитектуры ЦП могут быть разные инструкции для доступа к данным с различным адресом. Ниже приведен пример из Keil для одного из их компиляторов.

У близкого доступа есть определенный предел памяти, поэтому вы можете дать подсказкам компилятору разместить некоторые часто используемые переменные в области, доступной по более коротким инструкциям (очевидно, что описание доступа к 32-разрядному адресному пространству больше 16 -битное адресное пространство). Это может привести к меньшему /более быстрому коду.

ответил filo 16 PMpMon, 16 Apr 2018 14:47:59 +030047Monday 2018, 14:47:59

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132