Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Re: STM32 keil где находятся глобальные переменные, стек, ку

Чт май 09, 2013 19:15:48

SergeBS писал(а):
menzoda писал(а):Ну а где тогда сидят локальные переменные?

Когда понадобится ключевое слово volatile - узнаешь. Скорее всего. Если захочешь...
А мне можно уже узнать? Какое отношение имеет этот квалификатор к расположению переменных вообще?

Re: STM32 keil где находятся глобальные переменные, стек, ку

Чт май 09, 2013 19:19:35

Виктор, забей!!! :)
Веселье "состоится при любой погоде"...

Re: STM32 keil где находятся глобальные переменные, стек, ку

Чт май 09, 2013 19:23:34

Прямого отношения - не имеет. А косвенно влияет очень сильно. См. описание. Пересказывать не буду. Просто если переменная должна быть доступна из кучи разных мест, то запихивать ее в стек - не получится - накладно. Упрощенно как-то так.

Re: STM32 keil где находятся глобальные переменные, стек, ку

Чт май 09, 2013 20:11:37

SergeBS писал(а):Прямого отношения - не имеет. А косвенно влияет очень сильно. См. описание. Пересказывать не буду. Просто если переменная должна быть доступна из кучи разных мест, то запихивать ее в стек - не получится - накладно. Упрощенно как-то так.
Совершенно не так. В качестве коллбека рекомендую
См. описание.
Последний раз редактировалось ut1wpr Чт май 09, 2013 20:19:15, всего редактировалось 1 раз.

Re: STM32 keil где находятся глобальные переменные, стек, ку

Чт май 09, 2013 20:12:37

HHIMERA писал(а):Виктор, забей!!! :)
Веселье "состоится при любой погоде"...
Ух ты! А я думал, здесь веселье на одного :) :)
Привет Химерам все стран!
PS заглядывал в заготовку моего проекта, что я тебе подогнал?

Re: STM32 keil где находятся глобальные переменные, стек, ку

Чт май 09, 2013 20:18:15

ut1wpr писал(а):Даже не хотят вспомнить два простых словосочетания - стек данных и стек возврата. Свалили все в кучу. Компилятор умнее их оказался, и пользуется двумя стеками.
Практически все грамотные компилеры позволяют регулировать их соотношения и размеры.

Да боже ж мой. На картинке еще есть и закладка HEAP Configuration. И шо? Все грамотные компилеры тоже это имеют, а неграмотные не имеют? Так?
Только вот "маленькая" неувязочка. В книжке от производителя почему-то никакого data stack register нетути, а есть main stack, process stack и stack pointer. "Маленькая" разница.
Вспомним до кучи Link Register, чтобы еще больше дело со стеками запутать.
Кучу данных тоже можно организовывать как левой ноге захочется. Соответственно этот "грамотный" компилер - просто предлагает СВОЙ способ, и только. CV AVR тоже имеет визардов, которые кучу всякого могут сделать одним способом из многих. Но из этого не следует, что он умный, а прочие компилеры тупые. Как-то так, ИМХО.
А иначе получим: кто-то (да даже я ради понтов, например :) ) нацарапает компилер, который исходно будет иметь закладки для просто стека, для стека данных, для кучи, для динамического массива (а можно и для нескольких :) ), для буферов USART, USB, EtherNet ... И пусть код будет мягко говоря неоптимизирован, зато закладок-то сколько! ГРАМОТНОСТЬ так и прет. УРРЯ, товарищи!

Re: STM32 keil где находятся глобальные переменные, стек, ку

Чт май 09, 2013 20:23:25

ut1wpr писал(а):Совершенно не так.

А таки шо не так? С мифическим data stack вроде разобрались - что его производителем не предусмотрено, а закидоны отдельно взятых компиляторов не в счет. Будем с volatile тоже разбираться? Дык я "за"!

Re: STM32 keil где находятся глобальные переменные, стек, ку

Чт май 09, 2013 20:26:10

SergeBS писал(а):
ut1wpr писал(а):Даже не хотят вспомнить два простых словосочетания - стек данных и стек возврата. Свалили все в кучу. Компилятор умнее их оказался, и пользуется двумя стеками.
Практически все грамотные компилеры позволяют регулировать их соотношения и размеры.

Да боже ж мой. На картинке еще есть и закладка HEAP Configuration. И шо? Все грамотные компилеры тоже это имеют, а неграмотные не имеют? Так?
Только вот "маленькая" неувязочка. В книжке от производителя почему-то никакого data stack register нетути, а есть main stack, process stack и stack pointer. "Маленькая" разница.
Вспомним до кучи Link Register, чтобы еще больше дело со стеками запутать.
Кучу данных тоже можно организовывать как левой ноге захочется. Соответственно этот "грамотный" компилер - просто предлагает СВОЙ способ, и только. CV AVR тоже имеет визардов, которые кучу всякого могут сделать одним способом из многих. Но из этого не следует, что он умный, а прочие компилеры тупые. Как-то так, ИМХО.
А иначе получим: кто-то (да даже я ради понтов, например :) ) нацарапает компилер, который исходно будет иметь закладки для просто стека, для стека данных, для кучи, для динамического массива (а можно и для нескольких :) ), для буферов USART, USB, EtherNet ... И пусть код будет мягко говоря неоптимизирован, зато закладок-то сколько! ГРАМОТНОСТЬ так и прет. УРРЯ, товарищи!
Сколько импрессии! Я в восторге. Вашу бы энергию, да в мирных целях. :)
Никак не пойму, что вас так "приподняло" со стула? И о каком производителе и его книжечке идет речь? Я вообще-то говорил о компиляторах от IAR. Без привязки к аппаратным особенностям МК разных мастей. Потому как стеки, о которых я упомянул находятся "этажом выше" вами упомянутых. Это особенности компилятора и механизмов его работы с функциями и переменными. Вы, похоже, имели ввиду, уровень машинного представления. А это разные вещи.
Пожалуйста, не нервничайте. Это не способствует взаимопониманию. :)

Re: STM32 keil где находятся глобальные переменные, стек, ку

Чт май 09, 2013 20:28:05

SergeBS писал(а):
ut1wpr писал(а):Совершенно не так.

А таки шо не так? С мифическим data stack вроде разобрались - что его производителем не предусмотрено, а закидоны отдельно взятых компиляторов не в счет. Будем с volatile тоже разбираться? Дык я "за"!
В чем мифичность стандартного механизма распределения памяти компиляторов я так и не понял.
Если вам надо с квалификатором volatile разбираться - пожалуйста, кто ж вам запретит. Мне не надо, я много лет тому с ним разобрался. Еще до эры авропиков.

Re: STM32 keil где находятся глобальные переменные, стек, ку

Чт май 09, 2013 21:13:21

ut1wpr писал(а):Я вообще-то говорил о компиляторах от IAR. Без привязки к аппаратным особенностям МК разных мастей.

О. Я компиляторы перепутал. Ну и фиг с ними. Я GCC пользую. И мой тезис остается прежний: если нет никаких аппаратных средств поддержки, то всякие Data Stack, Heap, ... всего-навсего "умничанье" отдельно взятого компилера. Баг это или фича - зависит от симпатий конкретого индивидуума. Но вот никаким стандартным решением не является. И аргументом типа "а вот оно так делается" тоже быть не может. Более прямолинейно: Data Stack может быть, а может и НЕ БЫТЬ. С соответствующими последствиями. Вот ежели бы был такой специальный Data Stack Register и еще к нему Data Stack Memory - тогда Data Stack однозначно ДОЛЖЕН бы был быть. Да вот нетути такого.
Ну и исключительно вредности для: пример МК с Data Stack Register озвучьте. Чтобы понятно было, на какой планете IAR живет. Раз у него "клеш с бомбошками".

Re: STM32 keil где находятся глобальные переменные, стек, ку

Чт май 09, 2013 21:21:32

ut1wpr писал(а):В чем мифичность стандартного механизма распределения памяти компиляторов я так и не понял.

В том, что нет такого стандарта - Data Stack. А есть баг/фича от IAR. И только.
Да, целиком мои посты цитировать не обязательно.

Re: STM32 keil где находятся глобальные переменные, стек, ку

Чт май 09, 2013 21:27:23

SergeBS писал(а):
ut1wpr писал(а):В чем мифичность стандартного механизма распределения памяти компиляторов я так и не понял.

В том, что нет такого стандарта - Data Stack. А есть баг/фича от IAR. И только.
Да, целиком мои посты цитировать не обязательно.
Потрясающее самомнение. Вы считаете, что вас будут цитировать?
Давайте договоримся, вы смените штанишки, которые пока вам еще впору, тогда и поговорим. Когда вы почувствуете, что они вам жмут.
А пока изучайте инструментарий. Тоже иногда полезно.

Re: STM32 keil где находятся глобальные переменные, стек, ку

Чт май 09, 2013 21:39:30

ut1wpr писал(а):Потрясающее самомнение. Вы считаете, что вас будут цитировать?

А я тут ни при чем - меня цитировать не надо. Отдельно взятые индивидуум или компания стандарты не устанавливают. И это подтверждается "быстрым отходом на заранее подготовленные позиции", как только нужны аргументы весомее, чем скриншот.

Re: STM32 keil где находятся глобальные переменные, стек, ку

Чт май 09, 2013 22:07:06

А что цитировать то, какие аргументы???
Это всё бред не о чём...
:)))

Re: STM32 keil где находятся глобальные переменные, стек, ку

Чт май 09, 2013 22:32:34

HHIMERA писал(а):А что цитировать то, какие аргументы???
Это всё бред не о чём...
:)))

Дык и я об этом. Нету Data Stack Register - вот и нету такого стандарта - Data Stack. В отличие от просто стека.
А иначе куда бы он делся, был бы. Чтобы железку применить. В любом компиляторе.
"Нет человека - нет проблемы" :).

Re: STM32 keil где находятся глобальные переменные, стек, ку

Пт май 10, 2013 00:44:40

О! Как я отличненько на лопасти подбросил!
Ответить