1. Вы находитесь в архивной версии форума xaker.name. Здесь собраны темы с 2007 по 2012 год, большинство инструкций и мануалов уже неактуальны.
    Скрыть объявление

Какой ассемблер выбрать для изучения?

Тема в разделе "Assembler", создана пользователем Robo, 22 апр 2008.

  1. Robo

    Robo ░░▒▓█▓▒░░ Модератор

    Регистрация:
    10 авг 2007
    Сообщения:
    301
    Симпатии:
    169
    Баллы:
    0
    Какой ассемблер выбрать для изучения?

    На днях решал задачку на ассемблере одной умнице, красавице, будущей системной программистке (попросили помочь), и вспомнил, как я сам в свое время изучал ассемблер, как он мне тяжело давался. На самом деле ассемблер очень простой язык программирования, проблема для меня была в нормальных учебниках по ассемблеру, к тому же выхода в Сеть тогда не было, и спросить совета было абсолютно не у кого.
    В то время у меня было несколько книг по асму (я изучал его сразу под платформу IBM PC), но они годились разве что в качестве справочников, начать писать самостоятельно программы после их изучения было почти нереально. Я перечитывал эти книги по нескольку раз, пытался врубиться в каждый абзац, но понимание постепенно пришло только через годы. Надо заметить, этим одинаково грешили как отечественные авторы, так и иностранные, например, у меня была (и сейчас есть) книга в твердой красной обложке и чудным названием "Язык ассемблера для IBM PC и программирования" американского автора Питера Абеля — это просто кошмар. Отсутствие всякой системы в тексте, невнятный язык, куча воды и объяснений мелких деталей, которые на начальном этапе только сбивают с толку. Такое ощущение, что эти книги писались только для того чтобы навсегда вызвать у читателя отвращение к ассемблеру.

    Тогда же у меня появилась мечта, что если я все-таки когда-нибудь изучу ассемблер, то обязательно напишу книгу, которая максимально просто и быстро позволяла бы освоить этот язык. Этой моей маленькой мечте уже, наверное, больше 10 лет, а пока мечта не реализована, остается какое-то чувство неудовлетворенности. Я полистал некоторые современные книги по ассемблеру и похоже ситуация с хорошими книгами по ассемблеру не сильно изменилась. Поэтому надеюсь скоро выйдет книга за моим авторством посвященная программированию на ассемблере под DOS/Windows после прочтения которой программы на ассемблере сможет писать даже человек далекий от программирования. В ней будут учтены и разобраны все те сложности, которые возникали у меня самого на начальном этапе.

    Обратил внимание, что в университете, где учится будущая системная программистка, просили составить программу на Turbo Assembler (TASM). Я бы не рекомендовал использовать и изучать в наше время синтаксис этого ассемблера, т. к. TASM уже на свалке истории.
    Для тех, кто хочет изучить ассемблер, я составил небольшую памятку по наиболее известным и распространенным в наше время ассемблерам с комментариями какой же из них достоин изучения:

    MASM (Macro Assembler) — ассемблер от фирмы Microsoft. Сначала MASM был коммерческим продуктом, но затем Microsoft стала распространять его в составе бесплатного DDK (Device Driver Kit — пакет разработчика драйверов), а также в составе Visual C++. Хотя Microsoft официально не объявляла MASM бесплатным продуктом, но фактически этот ассемблер в настоящее время программисты могут использовать свободно. MASM является основным ассемблером под Windows, т. к. большинство примеров на ассемблере, в том числе от самой Microsoft, распространяются именно на MASM. Поэтому изучать никакие другие ассемблеры под DOS/Windows не имеет особого смысла, к тому же второй по популярности ассемблер в DOS/Windows – TASM, способен компилировать программы написанные на MASM. Microsoft продолжает совершенствовать свой продукт. Самая последняя версия MASM 8.0, включенная в состав Visual C++ 2005, имеет поддержку всех новых инструкций процессора (MMX, SSE, SSE2, SSE3, 3DNow!) и поддержку 64-разрядного режима.

    MASM32 — ассемблер созданный на основе MASM независимым программистом Стивом Хатчессоном (Steve Hutchesson или просто hutch) специально для программистов под Windows. На самом деле это тот же самый MASM от Microsoft (MASM32 версии 9 основан на MASM версии 6.14.8444), только в один пакет с ним включено множество библиотек облегчающих программирование, документации, примеров программ, полезных утилит, в том числе простенькое IDE (Integrated Development Environment — интегрированная среда разработки) и пр. Документация от MASM32, перевод которой существует в том числе на русский язык (можно найти на http://www.wasm.ru ), является отличным введением в программирование под Windows. MASM32 совершенно бесплатен и продолжает активно развиваться.
    Официальный сайт, где можно скачать пакет MASM32: http://www.masm32.com .

    TASM (Turbo Assembler) — ассемблер фирмы Borland, который во времена MS-DOS был очень популярен. Особенностью TASM является то, что он способен работать в режиме полностью совместимом с ассемблером MASM, а также в своем собственном режиме IDEAL (использует свой синтаксис). К сожалению, фирма Borland прекратила разработку и распространение своего ассемблера, поэтому в настоящее время этот ассемблер не рекомендуется к использованию и изучению.
    Последняя версия транслятора TASM 5.0, поддерживает команды только до 80486 процессора включительно. Отдельно был выпушен патч, обновляющий TASM до версии 5.3 и позволяющий работать с инструкциями Pentium MMX.

    Теперь TASM можно найти только в интернете или на пиратских дисках.
    В интернете (например на http://www.wasm.ru ) можно найти пакет TASM 5+ созданный энтузиастом под ником !tE специально для программистов под Windows, включающий в себя кроме ассемблера TASM версии 5.3, документацию, несколько заголовочных файлов под Windows и пару демонстрационных примеров. Не перепутайте этот пакет с TASM32 от фирмы Squak Valley Software — это совершенно независимый кроссассемблер (кроссассемблером называют ассемблер, запускающийся на одной системе, а производящий код для другой), ориентированный на специфические процессоры 6502, 6800/6801/68HC11, 6805, TMS32010, TMS320C25, TMS7000, 8048, 8051, 8080/8085, Z80, 8096/80C196KC.
    Стоит еще упомянуть, что наш соотечественник Половников Степан создал бесплатный ассемблер для DOS и Windows под названием Lazy Assembler ( http://lzasm.hotbox.ru ), совместимый с режимом IDEAL TASM и поддерживающий все современные команды процессоров: MMX, SSE, SSE2, SSE3 (PNI), SSE4 (MNI), 3DNow!Pro.

    NASM (Netwide Assembler) — бесплатный переносимый ассемблер с открытым исходным кодом (open source) под лицензией GNU Lesser General Public License (LGPL). Существуют версии NASM под операционные системы DOS, Windows, Unix, OS/2 и др., а также под 32- и 64-разрядные процессоры, т. е. изучив единожды синтаксис этого языка можно не переучиваясь программировать практически под любой платформой. NASM хорошо документирован (в т. ч. можно найти переводы документации на русский язык) и продолжает совершенствоваться. Однако под Windows этот ассемблер почти не используется, т. к. исторически монополия здесь принадлежит ассемблеру MASM. К тому же многие программисты находят не очень удобным синтаксис NASM. Сайт ассемблера NASM: http://nasm.sourceforge.net .

    FASM (Flat assembler) — очень популярный в последнее время ассемблер, созданный поляком Томашом Гриштаром (Tomasz Grysztar). FASM бесплатен и распространяется с исходным кодом (open source) под лицензией GNU Public Licence (GPL). На FASM были полностью написаны миниатюрные операционные системы MenuetOS и KolibriOS. Примечательно, что сам FASM был написан на себе самом. FASM имеет уникальный синтаксис с очень развитым макроязыком и поддерживает все современные инструкции 32- и 64-разрядных процессоров (MMX, SSE, SSE2, SSE3, 3DNow!). Существуют версии FASM под операционные системы DOS, Windows, Linux и версии UNIX, которые имеют поддержку ELF-формат файлов и библиотеку Си. Официальная страница FASM: http://flatassembler.net .

    AS — стандартный ассемблер практически во всех разновидностях UNIX, в том числе Linux и BSD. Свободная версия этого ассемблера называется gas (GNU assembler). Синтаксис AS (GAS) в корне отличается от синтаксиса предыдущих ассемблеров.

    Исторически в мире ассемблеров сложилось два основных типа синтаксисов: Intel-синтаксис и AT&T-синтаксис. Первый был предложен фирмой Intel и широко использовался в ассемблерах под MS-DOS. Синтаксис AT&T с самого начала стал использоваться в ассемблерах под UNIX системы.
    Сейчас все существующие ассемблеры придерживаются с некоторыми оговорками либо синтаксиса Intel, либо синтаксиса AT&T. Ассемблеры MASM, MASM32, TASM, NASM, FASM используют Intel-синтаксис. Ассемблеры AS и gas используют синтаксис AT&T.

    Если вы изучите первым MASM, то потом особых проблем с переходом на любой другой ассемблер, в том числе с AT&T-синтаксисом, у вас возникнуть не должно.

    Автор: Ivan Sklyaroff http://www.sklyaroff.ru
     
    Последнее редактирование: 22 апр 2008
  2. xazlon

    xazlon Новичок

    Регистрация:
    13 апр 2008
    Сообщения:
    21
    Симпатии:
    15
    Баллы:
    0
    Многие новички постояно устраивают холивары, masm/32 VS fasm.
    Сначало я был за fasm, позже почитал статьи для masm32.
    Что я хочу сказать каждый из них по своему хорош. Синтаксис в принципе не сильно различается, и если понимать их смысл, то думаю этих самых холиваров не было бы.
     
  3. Robo

    Robo ░░▒▓█▓▒░░ Модератор

    Регистрация:
    10 авг 2007
    Сообщения:
    301
    Симпатии:
    169
    Баллы:
    0
    я программировал как на фасме так и масме, все те задачи которые может решить масм, может решить и фасм. синтаксис у fasm более элегантный и красивый, он opensource проект, можно жёстко контролировать секции. он кроссплатформенный. И много других интересных штук ещё у него есть. А masm хмм... незнаю, я короче за фасм всеми конечностями. Но и от мамсма не отказываюсь. А холивары будут всегда, и не только среди ассемблеров, но и женщин, рассы, колбасы и водки. вот так вот!
     
  4. Qorlum

    Qorlum Новичок

    Регистрация:
    14 июл 2009
    Сообщения:
    4
    Симпатии:
    1
    Баллы:
    0
    Тоже FASM больше нравится...
    В частности отсутствием линкера (Не указано в предыдущем посте Robo :) ).
     
  5. Robo

    Robo ░░▒▓█▓▒░░ Модератор

    Регистрация:
    10 авг 2007
    Сообщения:
    301
    Симпатии:
    169
    Баллы:
    0
    Скорее всего це минус чем плюс, хотя с какой стороны смотреть конечно )
     
  6. t0wer

    t0wer Новичок

    Регистрация:
    2 дек 2008
    Сообщения:
    15
    Симпатии:
    10
    Баллы:
    0
    Я больше к Masm склоняюсь!
     
    Последнее редактирование модератором: 6 авг 2009

Поделиться этой страницей