Ну топик же был вообще про стек. Стек гарантированно поддерживает две вещи: push и pop. Остальное - от Лукавого
Понято. Ну раз уж ты тут.. ммм.. короче тоже вот появился вопросик. Поролейно с асмом хочу учить чистый Си, процедурный. Ну вопервых просто смотреть как это превращается в асм. А акцент на процедурный алгоритм.. ну есть мнение, что ооп это возможно ошибка человечества. Что скажешь об ооп?
это тебе в сторону кодогенерации двигать, хороший пример - clang, он тащемта открыт и пилят его совместимо с вижуал си, что феерическое говно от майкрософт
ну да, так и есть. просто как я говорил - после этого ебп+хх - это параметры ну и плюс память вызывающей функции заодно, а ебп-ХХ - это локальные переменные. но касаемо всех этих дел, даже с++ несмотря на стандарт ведёт себя по разному в разных реализациях типа gcc/msc/icc
Это особенности архитектуры. Есессно не зря коли стек у нас лежит себе в выделенной для него памяти и к ней можно обращаться как тебе вздумается. Никаких накладных расходов нет, почему-бы не юзать ? Но стек "вообще" не предусматривает наличие избирательного доступа к какому-то адресу же. Если нужна маленькая компактная железка - дохуя будет накладно делать для стека вундервафлю, позволяющую такой трюк. Скажем в какой-нибудь стиральной машине - ну нахуй оно не надо. Стиральная машина будет стоить неоправданно дороже. На самом деле со стиралками хуй бы с ними, не велика разница... речь скорее о масштабных проектах типа коллайдеров в которых явно не стоит усложнять и без того сложное. Если сей стек нужен чисто для исполнения какого-то простого кода - нахуй тебе не надо пихать в него переменные для вызова функций. Хватает одних только регистров. Кроме того внутренний стек есть внутри некоторых микросхем и там ужЬ точно нет никакой адресации. Только push и pop. А что можно сказать об ООП. Охуенная штука если без фанатизма юзать. Бывает как нахуярят деревце и "фабрики классов" - сам черт ноги попереломает. Делают они это якобы для масштабируемости и прочих радостей но в реале получают они только головную боль, страдания и обилие багов.
точнее говоря - долбоёбы, которые пилят код msc реально то ли индусы толи конченные деграды - за год нашёл 5 критических дыр, это из области например когда не происходил вызов родительского конструктора через брейс инит. итд. вообщем пиздецкие косяки.
Про черт ногу сломит.. ну я видал код на питоне помойму, от какого то дедушки.. ооп, по всем правилам жанра + личный почерк программиста. Ну да там полный пиздец
бро, а тебе не кажется что инструкция, которая исполняет push ebp; mov ebp, esp; sub esp XX какбэ была задумана разработчиками? и это enter
Полный пиздец для тебя. А когда ты пытаешься собрать воедино такой код от десятка-другого девелоперов - это не пиздец. Я не знаю каким словом это назвать. Это полная вафля... И вот после многих недель страданий оно все собирается в одну кучу а ты и сам не знаешь как все это говно работает. Если внезапно оно упадет - вот тогда это будет реально полный пиздец ибо отследить что, где, куда и откуда - хуй получится. Легче в асм смотреть чем в исходники тогда Но не сильно легче. Разбавим все это немного шаблонами, перегрузкой операторов и несколькими индусами - получим коктейль от которого даже Бог сойдет с ума. Поэтому таких девелоперов надо расстреливать. У нас Бог и так безумен довольно, не надо рисковать его психическим здоровьем, это плохо кончится...
Внутри микросхемы нет enter. Нету вообще этого принципиально. А стек есть. Аппаратный. И все в нем запихувается посредством транзисторной логики. Он даже не растет "вверх" или "вниз" как принято говорить в учебных заведениях. У него принципиально нет никаких адресов потому что эти транзисторы никак не адресуются. При команде "push" данные сдвигаются в следующий уровень транзисторов а предыдущий занимают новые данные. При обратной операции все ровно наоборот. Но это все-же стек ибо он выполняет условие FILO
Понято.. короче я пока процедурные алгоритмы поюзаю до усрачки, а потом подумаю об ооп. А вобче интересная штука получается... то есть че бы там на верхнем слое абстракции не придумали, все это обязано упасть на железо в виде асма. Это даже забавно.
Виртуальные. И там такой стек очень даже живет и применим. Если тебе не нужна адресация для того чтобы поигаться с дядь Женей в кошки-мышки - то и нахуй оно тебе не надо реализовывать адресацию. Простая ВМ, простая логика - адресация не нужна. Стек существует. Но на самом деле тут вопрос же в терминах. То как оно работает и то как определено в конкретной архитектуре - разные вещи слегка.
Ну в принципе да, но для корректности - стек это только push и pop. Это - везде одинаково и твердо как гранит. А дальше могут быть различия.