Внутренняя реализация, после обработки препроцессором, несомненно такая.UAVpilot писал(а):Ну как-же? Почти в каждой программе - таблица векторов прерываний.
Но я то просто пишу
Код: Выделить всё
ISR(TIMER0_OVF_vect)
{
...
return;
}
Внутренняя реализация, после обработки препроцессором, несомненно такая.UAVpilot писал(а):Ну как-же? Почти в каждой программе - таблица векторов прерываний.
Код: Выделить всё
ISR(TIMER0_OVF_vect)
{
...
return;
}
а остальное "дописывает" препроцессор и компилятор.Rafiq писал(а):Но я то просто пишу
Что есть чистый C? Я например могу писать объектноориентированные программы на обычном C (библиотеки X11 тому пример), а могу писать программы на C++ не применяя объектов/классов.Rafiq писал(а):Хотя конечно это уже нельзя назвать чистым Cно когда я говорил про чистый С, имел ввиду не С++, т.е. отсутствие объектно-ориентированных расширений языка.
Понятное дело, что в общем случае ОС должна загрузить в память исполняемый файл, да и в нем первым вызывается код зависящий от платформы, который встраивается в исполняемый файл линкером, и в конце этого кода есть вызовUAVpilot писал(а):а остальное "дописывает" препроцессор и компилятор.Rafiq писал(а):Но я то просто пишу
Вот ты просто начинаешь писать программу с функции main(), а кто эту функцию вызывает на испольнение, святой дух чтоли?
Что есть чистый C? Я например могу писать объектноориентированные программы на обычном C (библиотеки X11 тому пример), а могу писать программы на C++ не применяя объектов/классов.
Язык C - это своего рода макроассемблер высокого уровня. И относится к нему надо именно как к ассемблеру, т.е. с аналогичными преосторожностями, ибо на С что напишешь, то и получишь.
Код: Выделить всё
exit(main(int argc, char* argv[]))
А вот и зря! Особенно если пишешь на C/C++. Я не зря сказал, что на C/C++ что напишешь то и получишь - они практически никак не контролируют те-же треобразования типов. Например можешь сказать к чему приведёт такой код?Rafiq писал(а):Но как я и сказал, мне как прикладному программисту важно то, что пишу я, а что там добавит к моему коду препроцессор или линкер, или каким образом загрузчик размещает мою программу в памяти и передает ей управление, меня в подавляющем большинстве случаев не интересует.
Код: Выделить всё
unsigned int a = 5 - 10;Это собственно про что? Я где-то агитировал писать на Ассемблере?Rafiq писал(а):P.S. На втором курсе у нас был Ассемблер, и это казалось круто
Да, на этом можно наколоться, но я не припоминаю, чтобы накалывался, хотя возможно и было изредкаUAVpilot писал(а):Например можешь сказать к чему приведёт такой код?Кстати, при написании программ для STM32 есть потенциальная возможность так написать код, что словишь ошибку при исполнении кода который исполняется до вызова твоей main()Код: Выделить всё
unsigned int a = 5 - 10;
Разве что могу сказать, что для того, чтобы понимать архитектуру знать Ассемблер совершенно не обазательно. а вот чтобы писать на нём программы (как собственно и на C) архитектуру знать желательно.
Как ни странно, не только там за стольникRafiq писал(а):STM32F103 конечно вкусная штучка - всего за стольник на ebay

Я недавно купил в ближайшем магазине STM32F100C4T6B по 54 руб.Rafiq писал(а):STM32F103 конечно вкусная штучка - всего за стольник на ebay
Вот и меня это тоже пугает... И отладочные платы дешевле себестоимости: http://cnc-club.ru/forum/viewtopic.php?f=41&t=3069Serg-tmn писал(а):Вообще, складывается впечатление, что STM на российском рынке откровенно демпингует.
Это не баг, а фича. Она применяется во многих SDK для поименования регистров.Rafiq писал(а):А вот это уже интересно, примерчик в студию, как можно так сделать. Но если это характерно только для STM, то это баг именно средств разработки для STM, или архитектуры самого STM.
Неотъемлемая. Но как я говорил архитектур архитектур не так уж и много: CISC, RISC, MISC, ну и ещё RISC делится на два варианта по организации памяти (остальные комбинации фактически не имеют практического применения). И все ассемблеры в пределах архитектуры похожи.Rafiq писал(а):А разве система команд и режимы адресации не неотъемлемая часть архитектуры вычислительной системы?
Что ты понимаешь под архитектурой МК? Если то, что я написал чуть выше, то например мне это по сути не интересно - это вместо меня хорошо знает компилятор C.Rafiq писал(а):А ее то как раз удобно изучать на Ассеблере, все таки символические обозначения человеку как то понятней, чем соответствующие HEX и тем более бинарные коды
Потому что обычно почему-то сравнивают МК очень разных классов, например STM32 и ATMega8, но попробуйте сравнить с 32-битными AVR. А цена на МК сейчас по сути больше зависит от стоимости металла для выводов, чем от производительности.Rafiq писал(а):Я так понял, STM при одинаковой функциональности, быстродействию и объему памяти получается существенно дешевле, чем AVR? Если да, хотелось бы знать, почему - ну и посоветуйте плз аналог ATMega8 - если у них вообще есть такие мелкие
Можно. По сути CoOS - это набор библиотек (большей частью от stm) и IDE на основе Eclipse.Rafiq писал(а):Еще мне интересно, а под Юниксом, юзая gcc, собрать свою прогу вместе с CoOS можно?
В некоторых случаях бывает проще применить какой-нибудь мелкий PIC или AVR, чем навешивать буфера для получения 5-вольтовых входов/выходов.Rafiq писал(а):Хотя и избыточная для моих задачНо очень нравится встроенный RTC и USB
Куда теперь девать 7 оставшихся у меня Атмег8 и DS1307?