Прямого отношения - не имеет. А косвенно влияет очень сильно. См. описание. Пересказывать не буду. Просто если переменная должна быть доступна из кучи разных мест, то запихивать ее в стек - не получится - накладно. Упрощенно как-то так.
Человек - это звучит гордо, а обезьяна - объективно...
SergeBS писал(а):Прямого отношения - не имеет. А косвенно влияет очень сильно. См. описание. Пересказывать не буду. Просто если переменная должна быть доступна из кучи разных мест, то запихивать ее в стек - не получится - накладно. Упрощенно как-то так.
Совершенно не так. В качестве коллбека рекомендую
См. описание.
Последний раз редактировалось ut1wpr Чт май 09, 2013 20:19:15, всего редактировалось 1 раз.
ut1wpr писал(а):Даже не хотят вспомнить два простых словосочетания - стек данных и стек возврата. Свалили все в кучу. Компилятор умнее их оказался, и пользуется двумя стеками.
Практически все грамотные компилеры позволяют регулировать их соотношения и размеры.
Да боже ж мой. На картинке еще есть и закладка HEAP Configuration. И шо? Все грамотные компилеры тоже это имеют, а неграмотные не имеют? Так?
Только вот "маленькая" неувязочка. В книжке от производителя почему-то никакого data stack register нетути, а есть main stack, process stack и stack pointer. "Маленькая" разница.
Вспомним до кучи Link Register, чтобы еще больше дело со стеками запутать.
Кучу данных тоже можно организовывать как левой ноге захочется. Соответственно этот "грамотный" компилер - просто предлагает СВОЙ способ, и только. CV AVR тоже имеет визардов, которые кучу всякого могут сделать одним способом из многих. Но из этого не следует, что он умный, а прочие компилеры тупые. Как-то так, ИМХО.
А иначе получим: кто-то (да даже я ради понтов, например ) нацарапает компилер, который исходно будет иметь закладки для просто стека, для стека данных, для кучи, для динамического массива (а можно и для нескольких ), для буферов USART, USB, EtherNet ... И пусть код будет мягко говоря неоптимизирован, зато закладок-то сколько! ГРАМОТНОСТЬ так и прет. УРРЯ, товарищи!
Человек - это звучит гордо, а обезьяна - объективно...
А таки шо не так? С мифическим data stack вроде разобрались - что его производителем не предусмотрено, а закидоны отдельно взятых компиляторов не в счет. Будем с volatile тоже разбираться? Дык я "за"!
Человек - это звучит гордо, а обезьяна - объективно...
ut1wpr писал(а):Даже не хотят вспомнить два простых словосочетания - стек данных и стек возврата. Свалили все в кучу. Компилятор умнее их оказался, и пользуется двумя стеками.
Практически все грамотные компилеры позволяют регулировать их соотношения и размеры.
Да боже ж мой. На картинке еще есть и закладка HEAP Configuration. И шо? Все грамотные компилеры тоже это имеют, а неграмотные не имеют? Так?
Только вот "маленькая" неувязочка. В книжке от производителя почему-то никакого data stack register нетути, а есть main stack, process stack и stack pointer. "Маленькая" разница.
Вспомним до кучи Link Register, чтобы еще больше дело со стеками запутать.
Кучу данных тоже можно организовывать как левой ноге захочется. Соответственно этот "грамотный" компилер - просто предлагает СВОЙ способ, и только. CV AVR тоже имеет визардов, которые кучу всякого могут сделать одним способом из многих. Но из этого не следует, что он умный, а прочие компилеры тупые. Как-то так, ИМХО.
А иначе получим: кто-то (да даже я ради понтов, например ) нацарапает компилер, который исходно будет иметь закладки для просто стека, для стека данных, для кучи, для динамического массива (а можно и для нескольких ), для буферов USART, USB, EtherNet ... И пусть код будет мягко говоря неоптимизирован, зато закладок-то сколько! ГРАМОТНОСТЬ так и прет. УРРЯ, товарищи!
Сколько импрессии! Я в восторге. Вашу бы энергию, да в мирных целях.
Никак не пойму, что вас так "приподняло" со стула? И о каком производителе и его книжечке идет речь? Я вообще-то говорил о компиляторах от IAR. Без привязки к аппаратным особенностям МК разных мастей. Потому как стеки, о которых я упомянул находятся "этажом выше" вами упомянутых. Это особенности компилятора и механизмов его работы с функциями и переменными. Вы, похоже, имели ввиду, уровень машинного представления. А это разные вещи.
Пожалуйста, не нервничайте. Это не способствует взаимопониманию.
А таки шо не так? С мифическим data stack вроде разобрались - что его производителем не предусмотрено, а закидоны отдельно взятых компиляторов не в счет. Будем с volatile тоже разбираться? Дык я "за"!
В чем мифичность стандартного механизма распределения памяти компиляторов я так и не понял.
Если вам надо с квалификатором volatile разбираться - пожалуйста, кто ж вам запретит. Мне не надо, я много лет тому с ним разобрался. Еще до эры авропиков.
ut1wpr писал(а):Я вообще-то говорил о компиляторах от IAR. Без привязки к аппаратным особенностям МК разных мастей.
О. Я компиляторы перепутал. Ну и фиг с ними. Я GCC пользую. И мой тезис остается прежний: если нет никаких аппаратных средств поддержки, то всякие Data Stack, Heap, ... всего-навсего "умничанье" отдельно взятого компилера. Баг это или фича - зависит от симпатий конкретого индивидуума. Но вот никаким стандартным решением не является. И аргументом типа "а вот оно так делается" тоже быть не может. Более прямолинейно: Data Stack может быть, а может и НЕ БЫТЬ. С соответствующими последствиями. Вот ежели бы был такой специальный Data Stack Register и еще к нему Data Stack Memory - тогда Data Stack однозначно ДОЛЖЕН бы был быть. Да вот нетути такого.
Ну и исключительно вредности для: пример МК с Data Stack Register озвучьте. Чтобы понятно было, на какой планете IAR живет. Раз у него "клеш с бомбошками".
Человек - это звучит гордо, а обезьяна - объективно...
ut1wpr писал(а):В чем мифичность стандартного механизма распределения памяти компиляторов я так и не понял.
В том, что нет такого стандарта - Data Stack. А есть баг/фича от IAR. И только.
Да, целиком мои посты цитировать не обязательно.
Потрясающее самомнение. Вы считаете, что вас будут цитировать?
Давайте договоримся, вы смените штанишки, которые пока вам еще впору, тогда и поговорим. Когда вы почувствуете, что они вам жмут.
А пока изучайте инструментарий. Тоже иногда полезно.
ut1wpr писал(а):Потрясающее самомнение. Вы считаете, что вас будут цитировать?
А я тут ни при чем - меня цитировать не надо. Отдельно взятые индивидуум или компания стандарты не устанавливают. И это подтверждается "быстрым отходом на заранее подготовленные позиции", как только нужны аргументы весомее, чем скриншот.
Человек - это звучит гордо, а обезьяна - объективно...
HHIMERA писал(а):А что цитировать то, какие аргументы???
Это всё бред не о чём...
Дык и я об этом. Нету Data Stack Register - вот и нету такого стандарта - Data Stack. В отличие от просто стека.
А иначе куда бы он делся, был бы. Чтобы железку применить. В любом компиляторе.
"Нет человека - нет проблемы" .
Человек - это звучит гордо, а обезьяна - объективно...