Masm, nasm, fasm, hla, краткий ликбез?

Тема в разделе "WASM.BEGINNERS", создана пользователем xlinuks, 18 авг 2006.

  1. xlinuks

    xlinuks New Member

    Публикаций:
    0
    Регистрация:
    25 май 2006
    Сообщения:
    181
    Привет всем, я вот смотрю есть много версий ассемблера, может я в чемто ошибаюсь, но почему разные люди выбирают разные версии ассемблера, и почему потом переходят на другую версию, например с MASM на FASM.
    Вопрос - те кто используют FASM - почему его выбрали, хочу узнать из первых рук, ато каждая версия говорит только о своих качествах а о недостатках нет. Ведь есть еще и NASM, HLA (High Level Assembler), TASM и возможно другие разновидности. Я начал программировать на MASM но вижу здесь много пользователей FASM, я бы хотел узнать ваши мнения об этих версиях, как опытных пользователей, и хотел бы чтобы без грязи, очень прошу..
     
  2. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Я начал с FASM и его же и практикую :). Нравится относительная "низкоуровневость". Например, если я не ошибаюсь, в MASM директива PROC может вставлять какой-то код, типа пролога и эпилога. В FASM, как мне кажется, такого меньше. Но одним только FASM жив не будешь -- много кода, примеров и т.д. написано на MASM, например. Так что хотя бы ориентироваться в других синтаксисах придется.

    ИМХО.
     
  3. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    xlinuks
    Во-первых не версия, а разновидности.
    Во-вторых также различают MASM версии <=6 и MASM последующих версий. Этот барьер условно делит (DOS и Windows).
    Дальше выбор идет чисто идеологический.
    FASM - это свобода.
    MASM - наше наследие
    TASM - право выбора
    NASM - пришелиц с другой платформы
    Я еще мало знаю недостатки тех или иных компиляторов.
     
  4. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    это по желанию программиста
     
  5. xlinuks

    xlinuks New Member

    Публикаций:
    0
    Регистрация:
    25 май 2006
    Сообщения:
    181
    Одним словом думаю не обойтись при синтезе разнственности между той или иной разновидностью, ведь, кто будет спорить что например в NASM нет свободы, или что она ущемлена, я вообще нашел линк ( http://programmerstools.org/taxonomy/term/24 ) где и черт ногу сломает. Вот я например юзаю жабу несмотря на то что она местами с багами а гдето тормозит (хотя про тормоз не приходится вспоминать с выходом мустанга - я в очередной раз удивлен), зато в ней есть то что нет в C# - доказанная временем (и не только) кроссплатформенность и постоянное внедренее новых технологий причем за чистую раньше чем в других языках (что касается нета), а теперь и open source, зато C# работает чуть быстрее (как сейчас обстоят дела не знаю и вообще должен оговорится что *быстрее* это про for-лупы но не про 2D/3D graphics). Вот и здесь я хотел бы услышать плюсы и минусы, без грязи (мол тот язык лучше а другой фигня). Mika0x65 спасибо за пост.
     
  6. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    tasm не поддерживается производителем. Следовательно, та куча багов, что в нём есть, исправлению уже не подлежит. nasm всё ещё находится на стадии "бета" и, кажется, разработчики решили его забросить. hla - на любителя (кстати, кто им вообще пользуется кроме автора?)

    Обьективные плюсы фасма:
    + кроссплатформенность (даже лучше, чем в насм)
    + возможность генерировать голый бинарник (например, для прошивок). насм тоже умеет это делать.
    + самый мощный препроцессор для любителей макросов.
    + поддержка x64
    + совершенно бесплатен и распространяется с открытым исходным кодом.
    + если не спешить использовать бета-версии, то риск напороться на баг компилятора очень мал.
    + высокая скорость компиляции (гораздо быстрее насм, масм и др.)
    + кол-во прохождений определяется самим компилятором автоматически (тасм и насм могли бы поучиться)
    + практически не имеет минусов, но всё-таки:

    - не поддерживает по религиозным причинам дефайны через командную строку компилятора (это очень актуально для make-файлов). Можно, конечно, обойти этот минус через одно место, но всё же...
    - не поддерживает OMF формат

    Вроде, всё, IMHO.
     
  7. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Про разновидности ассемблеров писал Крис Касперски (или собирался), не знаю, правда, название статьи. Кто знает, куда он выкладывает статьи, посмотрите.
     
  8. xlinuks

    xlinuks New Member

    Публикаций:
    0
    Регистрация:
    25 май 2006
    Сообщения:
    181
    Quantum - очень доступно обьяснил, спасибо, буду знать, после чего закончу учить ассемблер на масме (на нем почти все туториалы) , перейду на фасм.

    IceStudent - нашел одну статью, может не совсем про разновидности ассемблера, но о нем как таковом, начал читать, очень занимательная, называется *Смертельная схватка: Ассемблер vs. Компилятор (Крис Касперски)*
    Статья в pdf на: http://megalib.com/books/909/acm_vc_c2.pdf

    Описание:
    В статье(PDF) приводится сравнительный анализ качества машинного кода и ручной ассемблерной оптимизации на примере широко распространенных компиляторов Microsoft Visual C++ 6.0, Borland C++ 5.5, WATCOM С++ 10.0
    Содержание:
    Введение
    Краткий экскурс в историю или ассемблер – это всегда весна
    Критерии оценки качества машинной оптимизации
    Методики оценки качества машинной оптимизации
    Сравнительный анализ основных компиляторов
    Обсуждение результатов тестирования
    Наглядная демонстрация качества машинной оптимизации
    Определение ситуаций предпочтительного использования ассемблера
    Особое замечание о создании защитного кода на ассемблере
    Программирование на ассемблере как особый род искусства
    Заключение
     
  9. yuzvir

    yuzvir New Member

    Публикаций:
    0
    Регистрация:
    20 май 2005
    Сообщения:
    97
    масмом тоже можно, только через задницу и тасмовский линкер :)
     
  10. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    yuzvir
    Через сторонние утилиты - не считается ;)
     
  11. Mescalito

    Mescalito New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2005
    Сообщения:
    78
    Адрес:
    Харьков
    Имхо лучшее в fasm, не считая отсутствия ненужных offset, addr, ptr, присутствия virtual at и макросов - т. е. собственно того, что определяет его лицо, это настоящая низкоуровневость. Может я и извращенец, но мне очень нравиться юзать макросы типа export, import и resource. А в masm'е раньше (пока не ушёл с него) сильно раздражали всякие совсем не ассемблерные вещи типа борьба с jmp-переходниками при вызовах апи, lib'ы и т. п.
     
  12. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев
    Quantum
    а что с отладочной инфой?
     
  13. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    MASM:
    option prologue: none, option epilogue: none - и не будет "лишнего" кода в функциях
    __imp__ префикс к имени функции позволяет избежать ненужных жампов
     
  14. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    xlinuks
    Нет, не эта.. Надо будет поискать.
     
  15. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    xlinuks
    эта тема обсуждалась сотни раз. Багов, недоработок и ограничений хватает в любом *asm'е.

    Mescalito
    Нужна низкоуровневость - юзай Debug. Всё остальное (включая fasm) - высокоуровневое.
     
  16. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    masquer
    Кроме как для использования данного ассемблера в качестве бакэнда для какого-нибудь компилятора ЯВУ, есть ещё назначения для этой фичи?

    asmfan
    Это прихоть MS линкера и прямого отношения к ассемблеру не имеет.
     
  17. Mescalito

    Mescalito New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2005
    Сообщения:
    78
    Адрес:
    Харьков
    Юзаю fasm и мне нравится :)
     
  18. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    насколько я помню была или есть экспериментальная версия с поддержкой этой фичи
     
  19. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Quantum
    Вообще-то да - в отладчике без неё грустновато..
     
  20. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев
    Quantum
    в смысле - зачем нужна отладочная инфа? :)) даже на знаю с чего начать :)