|
Гарвардская и фон неймовская, разница на практике? |
|
|
|
Nov 6 2011, 09:36
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(V_G @ Nov 6 2011, 08:51)  Вообще-то я к гуру себя не причисляю, а реплика была всего лишь к тому, что все надо изучать постепенно. Если вывалить на голову начинающего сразу все нюансы-тонкости, то легко запутаться. Тут уже 2 страницы споров гуру между собой по нюансам, а всего-то нужен был коротенький ответ. Ну, и изучать эти нюансы-тонкости все-таки лучше на практике, а не по ответам на форуме. Тогда и скрыть что-то сложно будет. 1. Разницы для си-программиста нет никакой. 2. Есть нюансы при использовании кривых компиляторов, 777777 любезно упомянул об одном из них применительно к гарварду. Уверен, можно найти также кривой компилятор и для фон-неймана. Под "кривым" подразумевается компилятор, оставляющий программисту самому организовывать доступ к разным типам данных, расположенным в разной памяти. Хороший компилятор делает это сам, при его использовании программист не должен заниматься архитектурозависимыми вопросами вообще. Собственно в этом и смысл хорошего компилятора- взять на себя рутинную работу. 3. Мне неизвестны нюансы архитектуры, о которых должен знать си-программист. Если речь идет о том чтобы выжать максимальную эффективность, то программисту нужно знать не нюансы архитектуры, а нюансы конкретного компилятора и конкретного микроконтроллера вплоть до последней ревизии ерраты. Подчеркну, к архитектуре это не имеет никакого отношения.
|
|
|
|
|
Nov 7 2011, 05:35
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(Ruslan1 @ Nov 6 2011, 13:36)  1. Разницы для си-программиста нет никакой. Смелое заявление! Цитата(Ruslan1 @ Nov 6 2011, 13:36)  2. Есть нюансы при использовании кривых компиляторов, 777777 любезно упомянул об одном из них применительно к гарварду. Уверен, можно найти также кривой компилятор и для фон-неймана. Под "кривым" подразумевается компилятор, оставляющий программисту самому организовывать доступ к разным типам данных, расположенным в разной памяти. Хороший компилятор делает это сам, при его использовании программист не должен заниматься архитектурозависимыми вопросами вообще. Собственно в этом и смысл хорошего компилятора- взять на себя рутинную работу. Фигасе заявочки! Да если компилятор решает за программиста где разместить те или иные данные, то его надо выкидывать нахрен! Даже const массивы нельзя располагать во флэш без ведома программиста - мало ли как мне захочется их проинициализировать, может это будет делать бутлоадер загружая их при включении по USART. А про const-указатели я уже писал. Забота компилятора лишь в том, чтобы следить за тем, чтобы программист не написал код, пишущий в эту область. Цитата(Ruslan1 @ Nov 6 2011, 13:36)  3. Мне неизвестны нюансы архитектуры, о которых должен знать си-программист. Если речь идет о том чтобы выжать максимальную эффективность, то программисту нужно знать не нюансы архитектуры, а нюансы конкретного компилятора и конкретного микроконтроллера вплоть до последней ревизии ерраты. Подчеркну, к архитектуре это не имеет никакого отношения. Еще более смелое заявление. Странно видеть программиста, исследующего отличия в ревизиях конкретного микроконтроллера, но полностью игнорирующего его архитектуру.
|
|
|
|
|
Nov 7 2011, 06:32
|
Местный
  
Группа: Участник
Сообщений: 338
Регистрация: 1-02-06
Из: Королев, М.О.
Пользователь №: 13 846

|
Цитата(777777 @ Nov 7 2011, 09:35)  Фигасе заявочки! Да если компилятор решает за программиста где разместить те или иные данные, то его надо выкидывать нахрен! Даже const массивы нельзя располагать во флэш без ведома программиста - мало ли как мне захочется их проинициализировать, может это будет делать бутлоадер загружая их при включении по USART. А про const-указатели я уже писал. Забота компилятора лишь в том, чтобы следить за тем, чтобы программист не написал код, пишущий в эту область. А вот для того, чтобы программист мог реализовать все свои хотелки, и существуют нестандартные (и компиляторозависимые) расширения языка. Но, повторю уже неоднократно прозвучавшую мысль, к архитектуре МК это не имеет ни малейшего отношения
--------------------
-Да как так-то?/-Да как-то так/-Ну так-то да
|
|
|
|
|
Nov 7 2011, 07:41
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(Harvester @ Nov 7 2011, 10:32)  А вот для того, чтобы программист мог реализовать все свои хотелки, и существуют нестандартные (и компиляторозависимые) расширения языка. Но, повторю уже неоднократно прозвучавшую мысль, к архитектуре МК это не имеет ни малейшего отношения Нестандартное компиляторозависимое расширение кейла для размещения данных в памяти DATA, IDATA и т.д., а также нестандартное расширение gcc PROGMEM для размещения данных в памяти программ - не имеют, оказывается, отношения к архитектурам этих МК! Всё, это конец, пора эту дискуссию завязывать.
|
|
|
|
|
Nov 7 2011, 11:57
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(777777 @ Nov 7 2011, 11:41)  Всё, это конец, пора эту дискуссию завязывать. Давно пора... Попытаюсь обобщить все мнения, высказанные выше. Программисту, пишущиму на любом языке программирования, необходимо знание архитектуры ЭВМ/МК, на котором будет работать программа. Причем это касается не только того гарвардская или неймоновская/принстонская архитектура. Нужно знание и системы команд, и разрядности шин, и системы прерываний (кстати, в стандарте языка Си - нет соответствующий средств для работы с ними), и устройств ввода-вывода... Для МК, зачастую, характерна нехватка ресурсов (в первую очередь - ОЗУ, вероятно это - результат "большого" объема ОЗУ в ПЭВМ). При проектировании программы ресурсы нужно распределить. При написании программы компилятору, обычно, нужно указать это распределение. Делается это - нестандартными расширениями языка Си (коль вопрос изначально был о Си). В остальном - "Си - он и в Африке...". Большенство компиляторов для МК поддерживают стандарт ISO9899 языка Си.
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|