На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
  
> Самый популярный ассемблер , Голосуем!
   
Укажите Ваш любимый ассемблер:
Гости не могут просматривать результаты голосования.
Гости не могут голосовать 
    Я понимаю, что можно использовать TASM для DOS, MASM32 для Windows, gas для Unix, а иногда использовать ещё и NASN, но, во-первых, перебрать все подобные варианты невозможно (поэтому я сделал как смог), а во-вторых, у каждого есть любимый ассемблер, которым он пользуется чаще всех остальных ассемблеров :)
      По моему FASM ето прекрасная комбинация: ТАСМ+МАСМ+НАСМ :) А насчет популярности, по моему она растет с каждым днем. (Только странно как-то - В Росии ТАСМ очень популярен. Я понимаю - так привыкли, да и не надо платить, но он безнадеждно остарел даже для ДОС. )

      Привет
        Я сам удивлён на счёт FASM'а и NASM'а.
        О первом здесь очень часто говорят.
          К сожалению tasm у нас изучают в вузах, вот поэтому собственно он и лидирует. B)
            tasm для dos, masm32, nasm для всего остального.
              Насчёт Tasm - в корне не согласен.
              Причём здесь ВУЗы? Лично я сам выбрал Tasm задолго до его изучения в ВУЗе.
              Tasm популярен потому, что прост в использовании и даёт полный контроль над кодом создаваемой программы. В отличие от Fasm, где в exe-шнике сегменты генерятся самим компилятором и полной картины ты не видишь. Хотя у Fasm есть свои преимущества.
              Жаль только что Borland перестал обновлять Tasm (или, по крайней мере, давно этого не делал).
              Последнее, что было добавлено - это поддержка MMX.
              Может быть Borland опомнится, хочется на это надеяться.
              Тем не менее поклонников у Tasm много, и я один из них.
                Обычно пишу на MASM32, недавно набрел на FASM и перешел на него - очень понравился.
                  MASM в винде. Для Доса раньше юзал TASM :huh:
                    несомненно fasm
                    и кто там сказал что
                    Цитата
                    где в exe-шнике сегменты генерятся самим компилятором и полной картины ты не видишь

                    мануали почитайте уважаемый
                      Да, насчёт сегментов я прогнал :)
                      Но всё равно Tasm forever.
                        давно я тасм в руки не брал
                        вот чем мне фасм нравится там все в одном флаконе и компилер и линкер
                        нажал кнопочку и готово
                        к тасму же линкер нада
                        да и насчет полного конторля
                        в фасме да я могу сам сделат таблицу импорта ехпорта, dosstub какой угодно воткнуть
                        атрибуты сегментов какие угодно установить
                        ну и макро довольно неплохо там получается
                        и само сабой набор форматов выходных файлов меня вполне устраивает
                        нет никаких проблем с инклудами (за 5 мин делаются для любой библиотеки) не надо искать lib и прочую хрень
                        и ide симпатичное
                        а для любителей окошко-строения есть

                        Fresh" project
                        (c)2003, 2004 Fresh developement team

                        This file is in the root directory of the Fresh RAD IDE.
                        Fresh is FASM based self compilable RAD IDE for Windows.
                        To look and compile it use recent version of the FASMW compiler or
                        Fresh IDE itself.
                          Насчёт линкера - вопрос спорный :)
                          А как ты на Fasm модульную программу напишешь?
                          Будешь в исходник кучу includ-ов пихать?
                          Хотя в принципе дело вкуса и привычки.
                          На самом деле я согласен, что Fasm это классная штука.
                          Лично я считаю его чуть-ли не единственным конкурентом Tasm (или наоборот :)).
                          В общем каждый выбирает под собственный вкус, но по-моему эти два ассемблера лучшие :)
                            а что ты под модульной понимаеш?:)
                              Понятие вроди общепринятое :)
                              Ну пишешь ты прогу в разных файлах, а потом всё это в кучу собираешь.
                              Но прикол в том, что разные части в разных файлах вообще разные люди пишут.
                              Так в Tasm компилируешь всё отдельно, а потом эти модули (*.obj или *.lib) компонуешь вместе.
                              А в Fasm кроме includ-ов я способа не знаю.
                              Но я повторюсь - это дело вкуса :)
                                ну дык если изврашатся компили свои обектники в COFF и линкуй любым линкером
                                  Это Вы, батенька, извращенец. Куча либов под АСМ уже написана, в том-то и секс, что объектники не свои, а ЧУЖИЕ! Только полные идиоты пишут свои проги с нуля. Надо юзать то, что уже сделано, иначе никакого прогресса не будет.
                                  А по поводу Асма - юзаю всего понемножку. Nasm - вешь кульная, но всё же сыроватая и кривая (попробуйте ему подсунуть исходник на ТАСМе, содержащий строку exitcode или на МАСМе - .exit) Он многие такие фишки обрабатывает неверно. FASM - не есть рулез для тех, кто пишет модулями. Лучшее, что я встречал - TASM в режиме синтаксиса Ideal. И в здешнем опросе забыли упомянуть пару нехилых вещей - это ArrowSoft ASM и WolfWare ASM Первый хорош своими возможностями (чуть хуже МАСМа), второй - своими размерами.
                                    Цитата Saharov Sergey @ 12.04.04, 08:22
                                    Nasm - вешь кульная, но всё же сыроватая и кривая (попробуйте ему подсунуть исходник на ТАСМе, содержащий строку exitcode или на МАСМе - .exit) Он многие такие фишки обрабатывает неверно.

                                    Гм. А попробуйте-ка MASM-у подсунуть исходник от NASM-а... Он его правильно поймет? ;) Это можно считать недостатками MASM-а и TASM-а, а не NASM-а.
                                      Привет

                                      Судя по ответам все хвалят fasm
                                      Есть ли у кого описалово (настройки и т.д и т.п.)

                                      Или может что еще посоветуете
                                        Описалово есть на его сайте: http://flatassembler.net
                                          Цитата Lerm @ 12.04.04, 09:28
                                          Гм. А попробуйте-ка MASM-у подсунуть исходник от NASM-а... Он его правильно поймет? ;) Это можно считать недостатками MASM-а и TASM-а, а не NASM-а.

                                          Согласен. И всё же - объектный формат файлов NASM слишком упрощён. Хотя в этом же и плюс - нет спецкомментариев. Багланд и МелкоМягкий пишут в объектники дополнительную инфу в виде спецкомментариев, являющихся исключительно их собственными недокументированными расширениями. Естественно, эти расширения правильно обрабатываются исключительно их собственными компоновщиками. Но стандартные - то директивы ВСЕ трансляторы должны обрабатывать правильно? В общем, я ругаю NASM исключительно за это, но его охрененный плюс - большое количество поддерживаемых форматов. Да и работает он без установки - скопировал файлик, прописал к нему путь - и юзай. Посему у меня он на втором месте. На первом - TASM (Ideal), на третьем - TASM (MASM), на четвёртом - MASM, FASM, на пятом - Arrow ASM, Wolfware ASM и на шестом - MASM51 А вообще это условно, всё зависит от задачи.
                                            Помимо списка предложенных ассемблеров, хочу предложить на обсуждение некий асм FRESH.
                                            Кстати на основе FASM.

                                            Вчера случайно попал на его демо версию, и знаете - он меня ВПЕЧАТЛИЛ.

                                            Помимио интерфейса, имеет хелп FASM в формате .chm
                                            Дает возможность простой работы со стандартными компанентами (очень удобно)

                                            З.Ы. Кстати может есть у кого последняя версия (и если есть дополнительная инфа по нему)
                                            Сообщение отредактировано: _zss_ -
                                              Цитата _zss_ @ 14.04.04, 08:39
                                              Помимо списка предложенных ассемблеров, хочу предложить на обсуждение некий асм FRESH.
                                              Кстати на основе FASM.

                                              Вчера случайно попал на его демо версию, и знаете - он меня ВПЕЧАТЛИЛ.

                                              Помимио интерфейса, имеет хелп FASM в формате .chm
                                              Дает возможность простой работы со стандартными компанентами (очень удобно)

                                              З.Ы. Кстати может есть у кого последняя версия (и если есть дополнительная инфа по нему)

                                              Привет
                                              Как ведущий разработчик (честь имею) могу сказать что Fresh ето не отдельной ассемблер а как бы "супер-GUI" версия FASM-a. К сожелению, то что пока имееться, ето пре-альфа - т.е. рабочая версия. Конечно она уже можеть делать больше чем FASMW (Я изпользую Fresh для написания Fresh-a так как он - самокомпилирующийся, как FASM) но намного меньше чем задуманно. (А задуманно ето точно как Delphi но для ассемблерa)

                                              Кстати, последняя версия у меня есть (пишу я ее точно сейчас) но она не работает, так как все еще до конца не написана. ;)

                                              А обсуждение я приветствую, конечно, ведь хорошие идей всегда от пользу будут.
                                                Цитата johnfound @ 15.04.04, 00:53
                                                Привет
                                                Как ведущий разработчик (честь имею) могу сказать что Fresh ето не отдельной ассемблер а как бы "супер-GUI" версия FASM-a. К сожелению, то что пока имееться, ето пре-альфа - т.е. рабочая версия. Конечно она уже можеть делать больше чем FASMW (Я изпользую Fresh для написания Fresh-a так как он - самокомпилирующийся, как FASM) но намного меньше чем задуманно. (А задуманно ето точно как Delphi но для ассемблерa)

                                                Кстати, последняя версия у меня есть (пишу я ее точно сейчас) но она не работает, так как все еще до конца не написана. ;)

                                                А обсуждение я приветствую, конечно, ведь хорошие идей всегда от пользу будут.

                                                Большая просьба при получении каких-либо результатов - сообщи (а то уж очень понравилось :P )

                                                З.Ы. Если не сложно, то сбрось пока какой-нибудь материальчик по-нему
                                                  Голосовал за TASM'у. MASM чего-то не полюбил. А т.к. пишу пока только под ДОС, то - TASM. Просто привык. У меня есть несколько ассемблеров, среди них и FASM. Штука, конечно, рульная, но разбираться с ней времени нету, да и под Винду на Асме пока не пишу...
                                                    Цитата
                                                    v26*FTP, 16.05.04, 12:35
                                                    У меня есть несколько ассемблеров, среди них и FASM. Штука, конечно, рульная, но разбираться с ней времени нету, да и под Винду на Асме пока не пишу...


                                                    А причем здесь Windows? Под FASM можно написать почти все что угодно: DOS EXE и COM, Windows PE, Linux и MenuetOS.Правда - для Apple програма не получиться. :D
                                                      Программа debug из win98 ;)
                                                        FASM - рулит ! И синтаксис почни не отличается от тасмовского, который тоже рулит =)
                                                          Ну не скажи, отличается :)
                                                          Конечно, не как gas (movl 4,%eax вместо mov eax,4), HLA, Gema (кажется) или что-то типа того, но всё же :)
                                                            То есть если программу написанную под TASM, отдать FASM он ее не возмет?
                                                              Да, придётся исправлять.
                                                              Конечно mov останется mov'ом, но вот директивы и некоторые другие вещи (в т.ч. метод обращения к меткам) менять придётся.
                                                                А мне as11 нравится. Под емулятор PDP11.
                                                                Features:

                                                                1. Поддержка макросов: no
                                                                2. Генерация объектного кода: no ( exe only )
                                                                3. Поддержка мультимодульности: no
                                                                4. IDE: Yes, win notepad!
                                                                5. Поддержка расширенных команд PDP11: yes! ( правда только одна, SOB )
                                                                6. Максимальная длина меток: 5 chars
                                                                  Предпочитаю TASM , а про всякие вузы ничего не знаю ;)
                                                                    Цитата myaut @ 18.07.04, 23:50
                                                                    Программа debug из win98 ;)

                                                                    :)

                                                                    Ай молодца!!
                                                                    Только это не компилятор, но поиграться с ним можно вдоволь:)

                                                                    И ты очень уж сильно урезал область существования этого отладчика, так как этот debug был (и есть) во всех операционных системах от била гейтса начиная с MSDOS 2.0 и заканчивая XP.
                                                                      Turbo Assembler (TASM) давно мертвый и вонючий труп.
                                                                      Macro Assembler (MASM/MASM32) хорошая вещь - реинкарнация. будете праведными - тоже возродитесь в лучшем теле. другими словами _очень рульная вещь_.
                                                                      TASM для DOS, MASM32 для Windows огурцы с молоком.
                                                                      Netwide Assembler (NASM) очень, очень хороший проект.
                                                                      Flat Assembler (FASM) САМЫЙ ЛУЧШИЙ АССЕМБЛЕР и FASM - синонимы.
                                                                      High Level Assembly Language (HLA) очень, очень хороший проект.
                                                                      GoAsm можно и debug поюзать
                                                                      SpAsm/RosAsm очень интересный(е) проект(ы).
                                                                      Pass32 а почему c-- забыли?
                                                                      gas/as86/OSIMPA(SHASM) протестантизм тоже приветствуется.

                                                                      ;)
                                                                        Вай, вай - давно мертвый и вонючий труп.
                                                                        А хотиш я тебе щас недостатки твоих любимых и почитаемых FASM и NASM сообщу.
                                                                        Такая предположим ситуация.
                                                                        Мне надо написать прогу под .286.
                                                                        Только не надо здесь выступать что это тоже труп.
                                                                        Это пример :)
                                                                        С остальными процами та же ситуация.
                                                                        Пишу значит прогу.
                                                                        Опа - компилирую. И чё??
                                                                        А ни чё :) не идёт она под .286
                                                                        А почему? А потому что компилятору нельзя указать под какой проц программа.
                                                                        В NASM можно (CPU 286 к примеру)- на XOR EAX,EAX ругается, но я и сам для двойки такого не пишу.
                                                                        А вот переходы что FASM что NASM near спокойно генерируют, которых на двойке и в помине нет.
                                                                        И чё делать - команды в ручную кодировать?
                                                                        Лады - можно везде писать jmp short label, тогда компилятор ругнётся если переход слишком длинный будет.
                                                                        Но это только пример - ещё со многими опкодами проблеммы.
                                                                        А в TASM я спокойно написал .286 и забыл - всё что выходит за рамки указанного проца компилятор сообщает как ошибку.
                                                                          Цитата
                                                                          Укажите Ваш любимый ассемблер



                                                                          ExpandedWrap disabled
                                                                            __asm
                                                                            {
                                                                            }


                                                                          :)
                                                                            cppasm,
                                                                            Цитата cppasm @
                                                                            Такая предположим ситуация.
                                                                            Мне надо написать прогу под .286.
                                                                            Только не надо здесь выступать что это тоже труп.


                                                                            А давай предположим, что мне надо написать программу под 8080. Вай-вай-вай, как облажается фасм, он ведь неправильно под нее программу скомпилирует! А вот в тасме я напишу .8080, он на меня ругнется что такого процессора нету, и я пойду спокойно спать.

                                                                            Пример не канает, так как такого барахла как 286е уже нигде нету. Другими словами я не выступаю а _утверждаю_ что 286е такой же труп как и тасм.

                                                                            Кстати, а ты рабочий 286й щас где-нибудь найти можешь? И что б его еще где заюзать надо было?

                                                                            Добавлено
                                                                            cppasm,
                                                                            Цитата cppasm @
                                                                            А почему? А потому что компилятору нельзя указать под какой проц программа.


                                                                            Кстати, это не проблема. Макросы в фасме разрешают это очень элегантно решить.
                                                                              286 врядли, 386 или 486 - легко :)
                                                                              Я ничего против FASM и NASM не имею, просто по-моему не стоит априори говорить что TASM умер.
                                                                              Приведи его недостатки что-ли.
                                                                              Я лично пользуюсь под MS-DOS (который по мнению многих тоже умер) и мне нравится.
                                                                              А насчёт макросов - так расскажи как это решить можно.
                                                                                Цитата cppasm @
                                                                                386 или 486 - легко


                                                                                такого добра навалом
                                                                                даже в прайсах еще видел
                                                                                http://comprice.ru/
                                                                                  cppasm,

                                                                                  Цитата cppasm @
                                                                                  286 врядли, 386 или 486 - легко :)

                                                                                  ну дык тогда повтори свой вопрос ;) Давай, втягивайся в дискусию. А то это болото немного застоялось :)

                                                                                  Цитата cppasm @
                                                                                  не стоит априори говорить что TASM умер.

                                                                                  А я не априори - я констатирую факт.

                                                                                  Ок, давай немного разберем что к чему:
                                                                                  • Тасм был спроектирован именно под ДОС, который остался только как учебная платформа для студентов тех преподов, которым за 70 и которые просто не в состоянии запомнить еще хотя бы что-то кроме того, что они 40 лет назад вызубрили, и причем далеко не факт что эта платформа лучше чем линукс или еще какой *никс. Заметь, спроектирован "под ДОС", а не под "Ассемблер х86".
                                                                                  • Жалкие потуги добавить в тасм высокоуровневую функциональность (+ поддержка программирования под Windows) с треском провалились, так как они снова попробовали привязать себя к операционной системе, а не к языку.
                                                                                  • Хотя макросредства тасма были лучше чем у масма, они все-равно оказались практически не у дел, так как были плохо спроектированы(прошу оценить объемы работ по написанию реализации макросредствами MMX, SEE и т.д. команд).
                                                                                  • /Одна из основных причин, почему он давно завонялся/Разработчики давным-давно забили боольшущий болт на тасм. Чего и вам усиленно желаю. А вы этого мертвеца все время ворошите. Пусть починет в бозе, как Ада, Алгол и иже с ними. RIP.
                                                                                  • Практически полное отсутствие библиотек. Даже (подчеркиваю - Даже) для Windows. Извините меня, в то время, как на рынке повсеместно лидируют компиляторы других фирм привязывать тасм только к себе - это гениально самоубийственная идея.
                                                                                  • И не надо твердить мне на каждом углу что на тасм - лучший для доса и именно там его все юзают - фиг, то что он был написан для доса еще не значит что он лучший. На фасме, например, под дос писать намного легче. Вот попробуйте сделать на тасме и на фасме следующие примеры и сравните: простой COM, простой EXE, мультисегментный EXE, простой резидент, и, главное, DPMI (то-есть смешанный 16- и 32-битный код)?

                                                                                  Сразу предупрежу - я на тасме писал более 4х лет. Потом я его поменял на масм, так как начал активно писать под вынь, на котором просидел тоже довольно долго. Щас я, конечно же (хе-хе, ну скажите что вы про это даже не догадывались :)), на фасме. И практически (вот, ключевая фраза "практически" - это должно освидетельствовать мою объективность) полностью доволен. Я могу писать не меняя синтаксиса и логических конструкций языка и под линух, и под винду, и даже полностью самостоятельный код (пр: какую-нибудь ось, загрузчик, вообще биос).
                                                                                  Хе, это была однозначно реклама :))

                                                                                  Да, и последнее. Не думайте, что наезжая на тасм я наезжаю на всех вас, его юзающих, а, тем более, преуменьшаю его историческую роль (тасмов режим IDEAL в свое время для всех нас был как откровение свыше, etc.). Если Вам хватает и нравится - я совершенно не имею ничего против, есть ведь люди уважающие только debug.exe? Я все это веду к тому, что новички, которые заходят в эту тему выбрать себе лучший инструмент не должны втискивать себя в рамки давно ржавого куска кода. "Он БЫЛ лучшим, так пусть лучшим в нашей памяти и остается".
                                                                                    К сожалению ты прав - разработчики на него забили, и это меня огорчает.
                                                                                    Но есть ещё WASM, Watcom assembler с совместимым синтаксисом - но опенсорс и вроди развивается, но не так активно как FASM и NASM. Просто FASM лично мне не поднодит, так как не поддерживает OMF, а сишный компилятор, которым я пользуюсь (Open Watcom C/C++), генерирует OMF.
                                                                                    Так что прогу я вместе не собиру, или посоветуйте линкер - может есть какой.
                                                                                    Конечно можно ещё заюзать coff2omf, но я не пробовал - может он действительно нормально конвертит.
                                                                                    Nasm OMF поддерживает, но код практически не оптимизирует.
                                                                                    С последних версий есть опция оптимизировать переходы - раньше все генерировал near если явно не указать short.
                                                                                    А такие команды как
                                                                                    ExpandedWrap disabled
                                                                                      mov eax,1
                                                                                    не оптимизирует до сих пор, а писать постоянно
                                                                                    ExpandedWrap disabled
                                                                                      mov eax,byte 1
                                                                                    меня задалбывает, и вдруг я где-нить пропущу, всякое бывает. FASM в этом плане гораздо лучше.
                                                                                    По тем же причинам меня напрягает постоянно отслеживать каждую команду, особенно в больших прогах.
                                                                                    Почему компилится скажем та же cpuid если я код хочу под .486

                                                                                    PS: Я кстати тоже загрузчики там всякие на TASM успешно писал, и ядро ОС сейчас на нём же пишу в свободное время. И никаких неудобств не испытываю.
                                                                                    Сообщение отредактировано: cppasm -
                                                                                      cppasm,
                                                                                      Цитата cppasm @
                                                                                      Просто FASM лично мне не поднодит, так как не поддерживает OMF, а сишный компилятор, которым я пользуюсь (Open Watcom C/C++), генерирует OMF.


                                                                                      Watcom Linker User's Guide
                                                                                      The Watcom Linker is ...
                                                                                      The following object module and library formats are supported by the Watcom Linker.
                                                                                      • The standard Intel Object Module Format (OMF).
                                                                                      • Microsoft’s extensions to the standard Intel OMF.
                                                                                      • Phar Lap’s Easy OMF-386 object module format for linking 386 applications.
                                                                                      The COFF object module format.
                                                                                      • The ELF object module format.
                                                                                      • The OMF library format.
                                                                                      • The AR (Microsoft compatible) object library format.

                                                                                      Мда, прочитал и удивился - хороший линкер :) Сегодня попробую поюзать...

                                                                                      Добавлено
                                                                                      cppasm,
                                                                                      Цитата cppasm @
                                                                                      Почему компилится скажем та же cpuid если я код хочу под .486

                                                                                      ExpandedWrap disabled
                                                                                        @CPU = 80486
                                                                                         
                                                                                        macro .486 { @CPU = 80486 }
                                                                                        macro .586 { @CPU = 80586 }
                                                                                         
                                                                                        macro   cpuid
                                                                                        {
                                                                                            if  @CPU < 80586
                                                                                                'error: this instruction valid only for 586+'
                                                                                            else
                                                                                                cpuid
                                                                                            end if
                                                                                        }
                                                                                        ;------------------------------------------------------------
                                                                                        .486
                                                                                            cpuid
                                                                                        Он бинарники чистые не шарит генерировать, а мне надо :'(
                                                                                        Насчёт макросов - прикольно, но это ж с каждой командой так париться.
                                                                                        И как всё-таки short и near jmp отличать таким макаром.
                                                                                        Сообщение отредактировано: cppasm -
                                                                                          Да, и еще. Некоторые 486е cpuid все-же поддерживают. Так что пользуй регистр флагов для идентификации - можно или нет ;)
                                                                                            Да я так и делаю, это просто пример неудачный. ;)
                                                                                              cppasm,

                                                                                              Цитата cppasm @
                                                                                              Он бинарники чистые не шарит генерировать, а мне надо :'(


                                                                                              Ну ты совсем обижаешь начальник: Compiling .ASM-source directly into a .TGA image with fasm!!
                                                                                              Сообщение отредактировано: Uri -
                                                                                                Дык это я про Watcom Linker писал, что FASM и NASM умеют - это мне известно. :)
                                                                                                  Uri, да макросы, это конечно хорошо, но вы же не станете так делать для каждой инструкции. допустим, мне надо написать прогу под p2, а я по своей глупости использую инструкции sse, не делать же макросы ко всему набору инструкций?
                                                                                                    Цитата
                                                                                                    а я по своей глупости использую инструкции sse?

                                                                                                    Следует ли из етого что умному ФАСМ лучше? :rolleyes: ;)
                                                                                                      Если ты постоянно будешь контролировать каждую команду в программе (а каждую ты не сможешь - пример те же переходы, которые генерирует сам компилятор и тебя не спрашивает near/short) то возможно да :tong:
                                                                                                      А ты все команды помнишь начиная с какого семейства процессоров появились, или ты каждую команду в справочнике смотреть будешь?
                                                                                                      По ходу разработка затянется... :D
                                                                                                        Цитата cppasm @
                                                                                                        ...По ходу разработка затянется...


                                                                                                        Ну, ета тема не очень подходит для обсуждения как надо програмировать на FASM, но...
                                                                                                        1. 8086, 80286, 80386 - можно о них можно забыть навсегда. RIP!
                                                                                                        2. 486, Pentium - ну скажем водораздел. Кому как хочеться.Кстати integer+FPU они те же самые как у P4.
                                                                                                        3. P+MMX и далее - процесоры, которых стоит поддерживать. integer+floating point+MMX инструции на 99% одинаковые. Там где не одинаковые, просто не стоит изпользовать, потому что они разные например у AMD и Intel и кроме етого ети инструкции обычно являются весьма медленные.
                                                                                                        4. SSE, 3DNow! и т.д. - ето очень дурной тон написать програму которая ложиться только на один комплект из етих инструкциях. Поетому все равно они тебе будут нужны все, даже и если одна процедура изпользует SSE, а другая 3DNow!, а вот решать какую процедуру надо звать, решаеться во время выполнения...
                                                                                                          В институте заставляют... Только нифига интересного в нем не нахожу :(
                                                                                                          Абсолютно тупой - в этом его огромный плюс... Что напишешь то и получишь..
                                                                                                            Ты это о чём, собственно?
                                                                                                              А где Z-80
                                                                                                              Это самый классный ассемблер
                                                                                                              Самые толковые команды
                                                                                                                FASM!!!!!!
                                                                                                                  Цитата [500mhz] @
                                                                                                                  вот чем мне фасм нравится там все в одном флаконе и компилер и линкер

                                                                                                                  Это большой недостаток. Я частенько пишу на тасме, а линкую сторонним линкером, например ваткомовским ;)
                                                                                                                  Цитата Uri @
                                                                                                                  Кстати, а ты рабочий 286й щас где-нибудь найти можешь? И что б его еще где заюзать надо было?

                                                                                                                  У нас в одном цеху тройки стоят, и менять их просто не на что, любой современный загнется через пару недель от пыли, мазута, жары и плохого настроения работяг :tong: А у этих все что можно обернули газетками, и ничего, пашут :)
                                                                                                                  Цитата cppasm @
                                                                                                                  Я лично пользуюсь под MS-DOS (который по мнению многих тоже умер)

                                                                                                                  Это не дос умер, это мозги у некоторых умерли ;) Дос еще долго будет спросом пользоваться, как единственная надежная и действительно real-time система.
                                                                                                                  Цитата Uri @
                                                                                                                  Заметь, спроектирован "под ДОС", а не под "Ассемблер х86".

                                                                                                                  :blink: "Ничего не понимаю" ©.
                                                                                                                  Цитата Uri @
                                                                                                                  Жалкие потуги добавить в тасм высокоуровневую функциональность (+ поддержка программирования под Windows) с треском провалились

                                                                                                                  Слова, слова... Можно поконкретнее? ИМХО в тасме высокоуровневых средств больше чем в любом другом, хотя он и дедушка уже ;)
                                                                                                                  Цитата Uri @
                                                                                                                  (прошу оценить объемы работ по написанию реализации макросредствами MMX, SEE и т.д. команд).

                                                                                                                  Эээээ... о каком объеме речь?
                                                                                                                  Цитата Uri @
                                                                                                                  Разработчики давным-давно забили боольшущий болт на тасм

                                                                                                                  Да? Не надо панику сеять, они забили на него как на отдельный продукт, но он идет в комлекте с тем же Си.
                                                                                                                  Цитата Uri @
                                                                                                                  Практически полное отсутствие библиотек. Даже (подчеркиваю - Даже) для Windows

                                                                                                                  Ты просто не умеешь их готовить © :lol: Почему у меня никогда не возникало проблем с либами? Голова и руки то зачем нужны ;)
                                                                                                                  Цитата Uri @
                                                                                                                  Вот попробуйте сделать на тасме и на фасме следующие примеры и сравните: простой COM, простой EXE, мультисегментный EXE, простой резидент, и, главное, DPMI (то-есть смешанный 16- и 32-битный код)?

                                                                                                                  Что то я не пойму, в чем здесь проблема?
                                                                                                                  ExpandedWrap disabled
                                                                                                                    ideal
                                                                                                                    model ххххх
                                                                                                                     
                                                                                                                    dataseg
                                                                                                                    ....
                                                                                                                    udataseg
                                                                                                                    ....
                                                                                                                    codeseg
                                                                                                                      start:
                                                                                                                        startupcode
                                                                                                                        ....
                                                                                                                        ....
                                                                                                                    end start

                                                                                                                  Получится COM или ЕХЕ, в зависимости от модели ;) причем прекрасно подходит и под 16-ти битные проги (в том числе и резиденты), и под 32-х битные, в том числе и под виндовс :tong: Template однако :lol: Попробуй такой универсальности добиться в фасме.

                                                                                                                  А если по существу, то вот некоторые достоинства тасма:
                                                                                                                  1. развитая поддержка всевозможных моделей памяти и ЯВУ.
                                                                                                                  2. режим IDEAL :wub: По сути это уже нечто большее чем просто асм.
                                                                                                                  3. упрощенные директивы, такие как CODESEG, DATASEG, UDATASEG, STARTUPCODE и прочее.
                                                                                                                  4. ни в одном асме нет такой удобной поддержки высокоуровневых средств. например вызов подпрограмм с параметрами, или вызов метода объекта, локальные переменные.
                                                                                                                  5. оптимизация переходов. не нужно гадать какой переход ставить, тасм сам все подставит :tong:
                                                                                                                  6. кто сказал что под виндовс он не удобен? берешь инклюды масма и подключаешь :tong: просто временно переходишь в режим MASM.
                                                                                                                  7. ни в одном асме нет такого удобного способа объявлять подпрограммы и типы данных - TYPEDEF и PROCDESC.
                                                                                                                  8. после бессонной ночи трудно еще что то припомнить, потому пока останавлюсь :D
                                                                                                                  Uri, а в фасме есть что то типа GLOBAL? Незаменимая штука в многомодульных проектах. А масмовский баг (mov ax,[0]) как в фасме компилится?
                                                                                                                    назло всем юным фанбоям фасма, победил TASM ;)
                                                                                                                      Цитата Uri @
                                                                                                                      Практически полное отсутствие библиотек. Даже (подчеркиваю - Даже) для Windows

                                                                                                                      Здесь лежит конвертер(с сорсами) масмовских инклюдов в тасмовские под режим IDEAL, и естественно сам windows.inc с примером ;)
                                                                                                                      http://www.mujweb.cz/www/komsbomb/
                                                                                                                      А также множество других интересных примеров (все под тот же IDEAL) :yes:
                                                                                                                      Так что Тасм жив!
                                                                                                                      Сообщение отредактировано: AndNot -
                                                                                                                        Голосовал за TASM и не жалею, но сейчас перешёл на WASM - Watcom Assembler.
                                                                                                                        Синтаксис tasm (не IDEAL)/masm, open source, поддержка MMX, Ext MMX, SSE, SSE2, SSE3, 3DNow! и т.д.
                                                                                                                        Достаточно активно развивается.
                                                                                                                        Есть поддержка команд типа pushd, pushw и т.д. что удобно если надо в 16-битном режиме скажем dword в стек занести.
                                                                                                                        Появилось только в tasm32, а он под ДОС сам по себе не работает.
                                                                                                                        Хотя есть HX DOS Extender - позволяет консольные Win32 проги под ДОС запускать, с ним работает.
                                                                                                                        Из недостатков - нет поддержки локальных меток за исключением анонимных ( @@: )
                                                                                                                        Правда я разработчикам указал на этот недостаток - обещались пофиксить в следующих релизах, пока юзаю свой препроцессор :)
                                                                                                                        Плюс у wlink появилась возможность создавать чистые бинарники, да и поддерживает он OMF OBJ, COFF OBJ, ELF OBJ и хз ещё что.
                                                                                                                        Про tlink такого сказать нельзя.
                                                                                                                        Сообщение отредактировано: cppasm -
                                                                                                                          Если уж про аналоги говорить, то есть такой Lazy Assembler. Совместим с тасм IDEAL. Поддержка инструкции вплоть до SSE4 и много еще чего интересного. И до сих пор развивается.

                                                                                                                          Добавлено
                                                                                                                          Но все равно предпочитаю проверенный временем тасм. А линкеры при необходимости можно и подобрать.
                                                                                                                            gas рулит, равно как и AT&T синтаксис
                                                                                                                              Цитата MAKCim @
                                                                                                                              gas рулит, равно как и AT&T синтаксис

                                                                                                                              В принципе кто к чему привык...
                                                                                                                              Единственное - но это уже не проблеммы AT&T синтаксиса - встроенный асм ужасно сделан в gcc.
                                                                                                                              Потому его недолюбливаю :)
                                                                                                                                cppasm
                                                                                                                                Цитата cppasm @
                                                                                                                                встроенный асм ужасно сделан в gcc.

                                                                                                                                почему ужасно?
                                                                                                                                  Потому что выглядит убийственно.
                                                                                                                                  Нафига ассемблерный листинг оформлять в виде строковых констант?
                                                                                                                                  Т.е. ну круглые скобки или фигурные - это в принципе ерунда.
                                                                                                                                  Но писать так:
                                                                                                                                  ExpandedWrap disabled
                                                                                                                                    asm(
                                                                                                                                        "movl [esp+4],ebx\n
                                                                                                                                         movl [esp+8],eax\n
                                                                                                                                         addl ebx,eax\n
                                                                                                                                         ret\n"
                                                                                                                                       );
                                                                                                                                  Зачем здесь переводы строки, все команды в строку заключены?
                                                                                                                                  Я понимаю что gcc компилеру так проще всё это передавать gas на обработку.
                                                                                                                                  Но выглядит ужасно. Лично мне не нравится.
                                                                                                                                  Сообщение отредактировано: cppasm -
                                                                                                                                    наверное так все же :)
                                                                                                                                    ExpandedWrap disabled
                                                                                                                                      asm(
                                                                                                                                          "movl 4(%esp), %ebx\n\
                                                                                                                                           movl 8(%esp), %eax\n\
                                                                                                                                           addl %ebx, %eax\n\
                                                                                                                                           ret"
                                                                                                                                      );

                                                                                                                                    Цитата

                                                                                                                                    Но выглядит ужасно. Лично мне не нравится.

                                                                                                                                    ну да, тут в принципе на любителя
                                                                                                                                    Сообщение отредактировано: MAKCim -
                                                                                                                                      Цитата MAKCim @
                                                                                                                                      наверное так все же :)

                                                                                                                                      Угу :)
                                                                                                                                      Писал на быструю руку.
                                                                                                                                      А часто я им не пользуюсь, так что как уж по памяти получилось ;)
                                                                                                                                      Цитата MAKCim @
                                                                                                                                      ну да, тут в принципе на любителя

                                                                                                                                      :) Согласен. Мож кому и нравится.
                                                                                                                                      Просто gas нормально воспринимаю, как и AT&T - просто по началу непривычно.
                                                                                                                                      А вот зачем во встроенном асме разработчики такой огород нагородили - мне не совсем понятно...
                                                                                                                                      1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                                                                                                                      0 пользователей:


                                                                                                                                      Рейтинг@Mail.ru
                                                                                                                                      [ Script execution time: 0,1231 ]   [ 16 queries used ]   [ Generated: 18.07.25, 04:35 GMT ]