Микроконтроллеры | Работаем с AVR микроконтроллерами на Ассемблере |
|
---|---|---|
Вот именно такую аргументацию обычно и приводят. На микроконтроллерах, кроме C, навскидку называю еще Васик. Проаргументируйте, чем он хуже. На некоторых микроконтроллерах существует PL/M. Проаргументируйте, чем он хуже. Берем сишную программу с PIC, переносим на AVR (или в обратную сторону) - что нужно в ней изменить, можно ли это сделать вообще? Можно ли это сделать любителю? Свой ли С у каждого семейства МК или все-таки общий? Как объяснить любителю работу вот такой конструкции (*proc)(par1,par2)? Не проще ли ему понять icall? Как одни микрокjнтроллеры умудряются обходиться без стека, а другие - нет. Что такое локальные переменные, и почему в одних семействах ими можно пользоваться, а в других нельзя? У тех, кого мы выпускали, ситуация намного хуже - языков-близнецов у них существует с десяток - вот там действительно перлы приходилось выслушивать. |
|
|
chav1961: Что такое локальные переменные, и почему в одних семействах ими можно пользоваться, а в других нельзя? А в каких нельзя? Уж если на пиках стек умудрились "вкомпилировать", то уж локальные переменные после этого не должны быть проблемой, имхо. |
|
|
Начнем с ATTiny (кроме Tiny13, естественно). Предупреждаю: |
|
|
Да я согласен с Borshef человек который только начал заниматься программированием например смотрит кусок кода на ASM и на C и видит в одном из двух: Max_Pinchuk: |
|
|
В пользу того, что ему понятнее. Об этом и речь. И его в это время ничуть не волнует эффективность, переносимость, экономия памяти, скорость работы и проч. Это "правильно/неправильно" или "нравится/не нравится"? О чем речь-то шла? |
|
|
Что есть локальные переменные, я в курсе. Повторю свой вопрос - почему в одних микроконтроллерах ими пользоваться можно, а в других - нет? |
|
|
Совершенно верно. Локальные переменные подразумевают физическое наличие памяти и аппаратно (либо программно) организованного стека. Наличие их зависит от архитектуры микроконтроллера. А если уж мы полезли в архитектуру, то не только ассемблер, но и С становятся системно-зависимыми. Повторюсь еще раз - выбор языка сначала делается на уровне "нравится/не нравится", а затем к этому выбору за уши притягиваются "научные" аргументы. Вот - на ассемблере получается более быстрый код. Вот - на С получаются переносимые программы. Вот сел любой лох на комп, начал писать на ассемблере, и программа волшебным образом стала быстрой-быстрой А другой сел писать на С - и она стала правильной-правильной, переносимой-переносимой Вот - в умной книге написано, что на таком-то языке получается то-то и то-то. А на самом деле в книгах пишется совсем другое - "во, когда я, автор этой книги, сажусь писать на таком-то языке, то у меня, автора книги, получается то-то и то-то!" И не факт, что любой, последовавший рекомендациям автора, непременно получит то же самое. |
|
|
Max_Pinchuk: Локальные переменные объявляются |
|
|
Не совсем так В любом месте переменные можно объявлять в С++, а не в С. Просто большинство нынешних так называемых С-компиляторов на самом деле понимают С++. Простейший пример - типа bool в языке С просто нет, он реализован макросом BOOL, тем не менее в GCC такое обьявление совершенно спокойно прокатывает. |
|
|
Арс: Неправильно Давайте так. Локальные переменные могут быть объявлены внутри функции в любом месте, а не только в самом начале после скобки, но только при условии, что эта функция не будет вызвана ранее, чем она была объявлена! |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |