Изменение старшего байта 4 байтного числа

Вам бы азбуку почитать … про стек памяти кучи …

«Ложите» четырьмя – не запутаетесь.

Роман, я хочу сказать, что Вы не туда лезете! Для программирования С/С++ Вам нахер не надо знать слово стек. Так же Вам нахер не надо знать как именно хранятся числа. Работайте средствами языка (а в языке нет никакого стека и в котором не определено в каком порядке хранятся байты числа). Не умничайте. Просто забудьте про эти страшные слова и пользуйтесь теми, средствами, что есть в языке.

2 лайка

Я хочу разобраться , что в этом плохого ? Я же написал вопрос риторический… Помниться Вы мне сами говорили что частично нельзя научиться программировать контроллеры… А я тоже не хочу все время сидеть на аурдишном коде с его ограничениями


Сохраняется регистры 28 и 29 (Y)
Делается окно в стеке на 4 байта (два RCALL)
Получившийся указатель стека копируется в Y
Наша переменная укладывается в окно стека побайтно от младшего к старшему…
В 8 битном AVR не летает ничего кроме 8 битных значений !!!

  1. Как бы ни передавались параметры, все локальные переменные всегда будут лежать в стеке.
  2. Трудно представить ситуацию, при которой в одном и том же стеке было бы целесообразно размещать параметры процедуры в одном порядке, а локальные переменные - в другом. Значит, логично считать, что в стеке все числа лежат единообразно.
  3. Трудно представить ситуацию, при которой формат хранения числа должен бы был зависеть от того, в каком месте памяти это число хранится - в области данных или в области стека. Следовательно, вообще все числа хранятся в памяти единообразно.

Тогда при чем здесь ИМХО и отладчик? Достаточно обычной логики, чтобы получить достоверный ответ.

По поводу регистров: как раз в AVR они лежат в общем адресном пространстве. Т.е. никак не отличаются от других областей памяти.

PS. Петрович прав: отсутствуют какие-либо основания для того, чтобы числа в разных областях памяти хранились по-разному.

ТС просто решил что стек это где то ещё, типа как flash в AVR в другом адресном пространстве с иной адресацией и поплыл …

Нет, ну бывают МК и с аппаратным стеком.

Нет. я знаю что стек в основной памяти и как раз везде и написано что идет навстречу кучи уменьшая адрес…отсюдого и родился вопрос , как там располагается и какие проблемы могут возникнуть при физическом обращении к адреса в стеке если обращаться к своим переменным

int main()
{
    stack<string> s;
 
    s.push("A");    // Вставляем `A` в stack
    s.push("B");    // Вставляем `B` в stack
    s.push("C");    // Вставляем `C` в stack
    s.push("D");    // Вставляем `D` в stack
 
    // возвращает общее количество элементов в stack
    cout << "The stack size is " << s.size() << endl;
 
    // печатает вершину stack (`D`)
    cout << "The top element is " << s.top() << endl;
 
    s.pop();        // удаление верхнего элемента (`D`)
    s.pop();        // удаление следующей вершины (`C`)
 
    cout << "The stack size is " << s.size() << endl;
 
    // проверяем, пуст ли stack
    if (s.empty()) {
        cout << "The stack is empty\n";
    }
    else {
        cout << "The stack is not empty\n";
    }
 
    return 0;
}

вроде как тоже Си и средства языка…

Пора за попкорном…

Причём, иногда, глубиной 2 или даже 8! уровней.)

Ну в данном случае я про программный

Вот адреса возвратов пишутся в стек иначе чем переменные !!!

Нет, это не Си.

Это не средства языка, а библиотека.

А чего ходить? Доставку надо заказывать.

1 лайк

Да ладно…

А вот Керниган считает , что СИ … и в языке понятие
стек есть…

и к тому же
а библиотеки это что - не средства языка ? Большинство из них на СИ написано.. :roll_eyes:

для программирования С/С++ Вам нахер не надо знать слово стек

Ну не знаю программировать контроллер и не знать в общих чертах как он работает …
это все равно , что играть на фортепьяно по памяти и незнать нот… А что я вот легко могу сыграть Земляни , или Блюе систем… Хотя мне медвет на ухо наступил и ноты кроме как названия я незнаю…

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

Дядя, ну ты даёшь! Я чуть было не поперхнулся!)
В Си ВООБЩЕ ничего нет! Никаких ВООБЩЕ библиотек, ты понимаешь? Это уже твоя инициатива, писать ли библиотеки или нет.)) Ну и то, как ты напишешь, так оно и будет.)))

я сказал , что это относится к средствам языка а не сам язык…

Я вроде даже с картинками из отладчика всё описал … Всё равно есть вопросы ?