menzoda писал(а):
1. Память под локальные переменные если и выделяется, то в стеке. Компилятор может это дело оптимизировать и не выделять под них память, работая только с регистрами.
Неверно. Стек используется в первую голову для временного хранения адреса возврата, критичных для корректного возврата регистров и ВОЗМОЖНО для передачи параметров и результата в процедуры/функции и обратно. Передача и хранение - это две большие разницы.
ibiza11 прав на все 146%.
Можно организовать еще и свой стек для хранения данных, а можно и просто через указатели шарашить. Нехай компилятор сам разбирается, где константа, а где переменная...
Рассмотрим принстонскую (она же Неймана, во всех персоналках) и гарвардскую (которая в МК) архитектуры. Соответственно - в Гарвардской архитектуре - два типа памяти: одна хранит программу, другая - данные. Ну и дальше понеслась проблема компилятора хранить переменные (данные) либо в регистрах (запихивая по необходимости в стек), либо в ОЗУ, а программу хранить во флеш-памяти. С соответствующими архитектурными тонкостями, когда адресация флеш, регистров и ОЗУ может быть как одинаковой, так и разной. У принстона проблем меньше. Можно даже самомодифицирующуюся программу написать.
(Ну 2х2=4. Банально. Это я просто откуда ноги у проблемы растут нарисовал).
Хохму про запуск программы из ОЗУ знаю. И что у кипарисов это - единственный способ - тоже.
Где что хранится - по карте памяти посмотреть можно, но особого смысла нет. Достаточно ключевыми словами указать, что именно является переменными, а дальше нехай компилятор сам думает, что он будет хранить и передавать в регистрах, что в стеке, а что - в ОЗУ. Его этому специально учили

.
По прочим пунктам от
menzoda и прочих что-то корректировать/предлагать и т.п. не буду. Каждый сам выбирает свой способ работы с переменными, как ему удобнее. Можно полистать примеры в том же кейле и посмотреть.
Да, я по простоте душевной считаю, что для 32-разрядных МК применять ассемблер - мазохизм. Но это МОЙ выбор. Кто хочет - пусть хоть в кодах пишет, мешать и спорить не буду.
Человек - это звучит гордо, а обезьяна - объективно...