Почему микроконтроллеры pic18fxxx лучше подходят для языка C

Семейство Pic18fxxx имеет много преимуществ и улучшений по сравнению с семейством микроконтроллеров pic16fxxx. Какая особенность делает их лучшими для программирования на C, чем устройства pic16fxxx?

Что заставляет вас думать, что они идеальны для C? Я бы сказал, что любое устройство PIC24 гораздо более «идеально», чем любое устройство PIC16/18 с архитектурной точки зрения (больше регистров, больше оперативной памяти...), и любой PIC32 гораздо более «идеален», чем PIC24, по своей природе. MIPS-архитектура...
Извините, неправильно пишу. Идеально по сравнению с устройствами pic14f, а не с другими.
PIC14F? Этой семьи не существует, не так ли?
Я имею в виду pic16fxxx. Ошибка за ошибкой!
На самом деле когда-то был PIC 14, но теперь вместе с PIC 17 его "никогда не существовало".

Ответы (3)

Не знаю насчет "идеально для". Это маркетинговый термин, которому нет места в научных дискуссиях.

Однако одно большое преимущество архитектуры PIC 18 по сравнению с исходной архитектурой PIC 16, особенно в отношении компиляторов, заключается в том, что на PIC 18 можно реализовать программный стек данных с помощью отдельных инструкций для PUSH и POP. PIC 18 также имеет более глубокий стек вызовов, 32 вместо 8, что может помочь, когда компилятор неявно вызывает подпрограммы. Режим косвенной адресации PLUSW, вероятно, будет использоваться компилятором чаще, чем человеком-программистом.

PIC 18 также имеет другие преимущества, которые полезны как для компиляторов, так и для программистов, таких как 3 аппаратных указателя вместо одного, автоматические режимы косвенной адресации inc/dec, аппаратный умножитель 8x8 на 16, сложение с переносом и вычитание с заимствованием, и еще несколько приятностей.

Вы правы, я изменил на «лучше», чем «идеально».

Некоторые компиляторы C хранят локальные переменные в аппаратном или программном стеке. Когда код входит в подпрограмму, размер ее локальных переменных добавляется или вычитается из регистра, который используется в качестве указателя стека/кадра. Когда «расширенный набор инструкций» включен, инструкции PIC18Fxx могут напрямую обращаться к первым ~ 96 байтам, следующим за адресом указателя кадра. это ПОЧТИдействительно хорошая функция. Это было бы действительно хорошей функцией, если бы, например, процессор сделал 15 байтов небанковского адресного пространства сопоставлением с адресами на 1-15 байтов выше FSR2, а 7 байтов сопоставлены с адресами на 1-7 байтов выше каждого из других регистров FSR, оставляя большую часть небанковского пространства в виде небанковской оперативной памяти. К сожалению, несмотря на тот факт, что у большинства функций не будет даже восьми байтов локальной памяти (гораздо меньше 16), отдавать 96 адресов для обработки смещений 0-95 выше FSR2 абсурдно расточительно.

Обратите внимание, что некоторые другие системы компиляции C назначают фиксированные адреса для локальных переменных; такие системы определяют во время компоновки, какие функции не могут быть «живыми» одновременно, и могут размещать переменные для таких функций по одним и тем же адресам. При условии, что код не вызывается повторно, этот подход может быть столь же эффективным (иногда более эффективным), чем использование стека; однако он не работает с повторно входящими подпрограммами.

Вы можете спросить Google о большом количестве сравнений между PIC16F и PIC18F.

Приходя к вам вопрос Почему микроконтроллеры pic18fxxx лучше для языка C?

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

Одним из основных примеров таких инструкций могут быть инструкции, связанные с МАТЕМАТИКОЙ.

Компилятор XC8 поддерживает расширенный набор инструкций, который специально помогает компиляторам C генерировать оптимизированный двоичный файл.

Это не ответ. ОП уже знает, что PIC 18 лучше поддерживает C, но спросил, как именно он это делает.
Я уже упоминал, что благодаря поддержке полного набора инструкций особой мощности, которого нет у pic16f
Верно, но это очевидно и уже было известно. ОП уже знает, что PIC 18 имеет «множество преимуществ и улучшений по сравнению с pic16fxxx» . Без объяснения того, что конкретно, например, конкретные инструкции и тому подобное, вы считаете вспомогательными средствами компиляторов, это вообще не ответ.