Ответы пользователя по тегу Assembler
  • Архитектура компьютера, где размещен стек?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Везде по разному.

    К примеру для современных Windows запуск исполняемого файла приводит к созданию вирт.адресного пространства. Загрузчик запуская исполняемый файл смотрит в системные данные в этом файле(PE-заголовок) и берет от туда необходимые значения. Далее выделяет в этом адресном пространстве область, которую запущенная программа и будет использовать как стек.

    В DOS программах по-другому. Если это COM-файл, то выделяется сначала 0x100 байт в качестве Program System Prefix, т.е. спец. область для системных данных. Далее целиком из com в память и только потом выделяет область под стек.

    После создания области под стек указатель присвается в указатель стека, к примеру в регистр esp.

    В современных системах Linux\Windows\OS X процесс настройки стека похожи. Разве что различия в формате исполняемых файлов и организации адресного пространства. Но поняв один раз под одну из этих систем, то получаешь понимание как это примерно организовано для других.
    Ответ написан
    2 комментария
  • Стоит ли учить ассемблер для глубокого понимания архитектуры компьютера?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Удивляюсь, что не задали вопроса: А стоит ли вообще программировать?
    Про ассемблер: Конечно стоит!
    У Джоэла Спольски есть статья про то как протекаются абстракции. Все дело в том, что пока якобы на высоком уровне программирования все идет хорошо и Вы думаете, что все ОК и не паритесь. Но как только сталкиваетесь с нетривиальной проблемой, то тут же начинаете плясать с бубном. "привязка к железу" развивает мышление в более строгим. Ведь ни один из программистов не задается вопросом "А стоит ли учить математику?". Вернее задаются, но это маргиналы. Так и с ассемблером. Он развивает программиста таким образом, что после его понимания это уже будет более качественный программист по отношению к прежнему уровню.
    Ответ написан
    1 комментарий