Перейти к содержанию
    

Гарвардская и фон неймовская

Вообще-то я к гуру себя не причисляю, а реплика была всего лишь к тому, что все надо изучать постепенно. Если вывалить на голову начинающего сразу все нюансы-тонкости, то легко запутаться. Тут уже 2 страницы споров гуру между собой по нюансам, а всего-то нужен был коротенький ответ.

Ну, и изучать эти нюансы-тонкости все-таки лучше на практике, а не по ответам на форуме. Тогда и скрыть что-то сложно будет.

1. Разницы для си-программиста нет никакой.

2. Есть нюансы при использовании кривых компиляторов, 777777 любезно упомянул об одном из них применительно к гарварду. Уверен, можно найти также кривой компилятор и для фон-неймана. Под "кривым" подразумевается компилятор, оставляющий программисту самому организовывать доступ к разным типам данных, расположенным в разной памяти. Хороший компилятор делает это сам, при его использовании программист не должен заниматься архитектурозависимыми вопросами вообще. Собственно в этом и смысл хорошего компилятора- взять на себя рутинную работу.

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И уж в любом случае архитектура для C-программиста играет куда меньшую роль, чем для asm-программиста.

 

Нас выручают макросы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Разницы для си-программиста нет никакой.

Смелое заявление!

 

2. Есть нюансы при использовании кривых компиляторов, 777777 любезно упомянул об одном из них применительно к гарварду. Уверен, можно найти также кривой компилятор и для фон-неймана. Под "кривым" подразумевается компилятор, оставляющий программисту самому организовывать доступ к разным типам данных, расположенным в разной памяти. Хороший компилятор делает это сам, при его использовании программист не должен заниматься архитектурозависимыми вопросами вообще. Собственно в этом и смысл хорошего компилятора- взять на себя рутинную работу.

Фигасе заявочки! Да если компилятор решает за программиста где разместить те или иные данные, то его надо выкидывать нахрен! Даже const массивы нельзя располагать во флэш без ведома программиста - мало ли как мне захочется их проинициализировать, может это будет делать бутлоадер загружая их при включении по USART. А про const-указатели я уже писал. Забота компилятора лишь в том, чтобы следить за тем, чтобы программист не написал код, пишущий в эту область.

 

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

Еще более смелое заявление. Странно видеть программиста, исследующего отличия в ревизиях конкретного микроконтроллера, но полностью игнорирующего его архитектуру.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Фигасе заявочки! Да если компилятор решает за программиста где разместить те или иные данные, то его надо выкидывать нахрен! Даже const массивы нельзя располагать во флэш без ведома программиста - мало ли как мне захочется их проинициализировать, может это будет делать бутлоадер загружая их при включении по USART. А про const-указатели я уже писал. Забота компилятора лишь в том, чтобы следить за тем, чтобы программист не написал код, пишущий в эту область.

А вот для того, чтобы программист мог реализовать все свои хотелки, и существуют нестандартные (и компиляторозависимые) расширения языка.

Но, повторю уже неоднократно прозвучавшую мысль, к архитектуре МК это не имеет ни малейшего отношения

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вот для того, чтобы программист мог реализовать все свои хотелки, и существуют нестандартные (и компиляторозависимые) расширения языка.

Но, повторю уже неоднократно прозвучавшую мысль, к архитектуре МК это не имеет ни малейшего отношения

 

Нестандартное компиляторозависимое расширение кейла для размещения данных в памяти DATA, IDATA и т.д., а также нестандартное расширение gcc PROGMEM для размещения данных в памяти программ - не имеют, оказывается, отношения к архитектурам этих МК!

 

Всё, это конец, пора эту дискуссию завязывать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всё, это конец, пора эту дискуссию завязывать.

Давно пора...

Попытаюсь обобщить все мнения, высказанные выше.

Программисту, пишущиму на любом языке программирования, необходимо знание архитектуры ЭВМ/МК, на котором будет работать программа. Причем это касается не только того гарвардская или неймоновская/принстонская архитектура. Нужно знание и системы команд, и разрядности шин, и системы прерываний (кстати, в стандарте языка Си - нет соответствующий средств для работы с ними), и устройств ввода-вывода...

Для МК, зачастую, характерна нехватка ресурсов (в первую очередь - ОЗУ, вероятно это - результат "большого" объема ОЗУ в ПЭВМ). При проектировании программы ресурсы нужно распределить. При написании программы компилятору, обычно, нужно указать это распределение. Делается это - нестандартными расширениями языка Си (коль вопрос изначально был о Си).

В остальном - "Си - он и в Африке...". Большенство компиляторов для МК поддерживают стандарт ISO9899 языка Си.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

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

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...