
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.30] |
![]() |
|
![]() |
Сообщ.
#1
,
|
|
Я понимаю, что можно использовать TASM для DOS, MASM32 для Windows, gas для Unix, а иногда использовать ещё и NASN, но, во-первых, перебрать все подобные варианты невозможно (поэтому я сделал как смог), а во-вторых, у каждого есть любимый ассемблер, которым он пользуется чаще всех остальных ассемблеров
![]() |
Сообщ.
#2
,
|
|
|
По моему FASM ето прекрасная комбинация: ТАСМ+МАСМ+НАСМ
![]() Привет |
![]() |
Сообщ.
#3
,
|
|
Я сам удивлён на счёт FASM'а и NASM'а.
О первом здесь очень часто говорят. |
Сообщ.
#4
,
|
|
|
К сожалению tasm у нас изучают в вузах, вот поэтому собственно он и лидирует. B)
|
Сообщ.
#5
,
|
|
|
tasm для dos, masm32, nasm для всего остального.
|
Сообщ.
#6
,
|
|
|
Насчёт Tasm - в корне не согласен.
Причём здесь ВУЗы? Лично я сам выбрал Tasm задолго до его изучения в ВУЗе. Tasm популярен потому, что прост в использовании и даёт полный контроль над кодом создаваемой программы. В отличие от Fasm, где в exe-шнике сегменты генерятся самим компилятором и полной картины ты не видишь. Хотя у Fasm есть свои преимущества. Жаль только что Borland перестал обновлять Tasm (или, по крайней мере, давно этого не делал). Последнее, что было добавлено - это поддержка MMX. Может быть Borland опомнится, хочется на это надеяться. Тем не менее поклонников у Tasm много, и я один из них. |
Сообщ.
#7
,
|
|
|
Обычно пишу на MASM32, недавно набрел на FASM и перешел на него - очень понравился.
|
Сообщ.
#8
,
|
|
|
MASM в винде. Для Доса раньше юзал TASM
![]() |
Сообщ.
#9
,
|
|
|
несомненно fasm
и кто там сказал что Цитата где в exe-шнике сегменты генерятся самим компилятором и полной картины ты не видишь мануали почитайте уважаемый |
Сообщ.
#10
,
|
|
|
Да, насчёт сегментов я прогнал
![]() Но всё равно Tasm forever. |
Сообщ.
#11
,
|
|
|
давно я тасм в руки не брал
вот чем мне фасм нравится там все в одном флаконе и компилер и линкер нажал кнопочку и готово к тасму же линкер нада да и насчет полного конторля в фасме да я могу сам сделат таблицу импорта ехпорта, 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. |
Сообщ.
#12
,
|
|
|
Насчёт линкера - вопрос спорный
![]() А как ты на Fasm модульную программу напишешь? Будешь в исходник кучу includ-ов пихать? Хотя в принципе дело вкуса и привычки. На самом деле я согласен, что Fasm это классная штука. Лично я считаю его чуть-ли не единственным конкурентом Tasm (или наоборот ![]() В общем каждый выбирает под собственный вкус, но по-моему эти два ассемблера лучшие ![]() |
Сообщ.
#13
,
|
|
|
а что ты под модульной понимаеш?
![]() |
Сообщ.
#14
,
|
|
|
Понятие вроди общепринятое
![]() Ну пишешь ты прогу в разных файлах, а потом всё это в кучу собираешь. Но прикол в том, что разные части в разных файлах вообще разные люди пишут. Так в Tasm компилируешь всё отдельно, а потом эти модули (*.obj или *.lib) компонуешь вместе. А в Fasm кроме includ-ов я способа не знаю. Но я повторюсь - это дело вкуса ![]() |
Сообщ.
#15
,
|
|
|
ну дык если изврашатся компили свои обектники в COFF и линкуй любым линкером
|
Сообщ.
#16
,
|
|
|
Это Вы, батенька, извращенец. Куча либов под АСМ уже написана, в том-то и секс, что объектники не свои, а ЧУЖИЕ! Только полные идиоты пишут свои проги с нуля. Надо юзать то, что уже сделано, иначе никакого прогресса не будет.
А по поводу Асма - юзаю всего понемножку. Nasm - вешь кульная, но всё же сыроватая и кривая (попробуйте ему подсунуть исходник на ТАСМе, содержащий строку exitcode или на МАСМе - .exit) Он многие такие фишки обрабатывает неверно. FASM - не есть рулез для тех, кто пишет модулями. Лучшее, что я встречал - TASM в режиме синтаксиса Ideal. И в здешнем опросе забыли упомянуть пару нехилых вещей - это ArrowSoft ASM и WolfWare ASM Первый хорош своими возможностями (чуть хуже МАСМа), второй - своими размерами. |
![]() |
|
|
Цитата Saharov Sergey @ 12.04.04, 08:22 Nasm - вешь кульная, но всё же сыроватая и кривая (попробуйте ему подсунуть исходник на ТАСМе, содержащий строку exitcode или на МАСМе - .exit) Он многие такие фишки обрабатывает неверно. Гм. А попробуйте-ка MASM-у подсунуть исходник от NASM-а... Он его правильно поймет? ![]() |
Сообщ.
#18
,
|
|
|
Привет
Судя по ответам все хвалят fasm Есть ли у кого описалово (настройки и т.д и т.п.) Или может что еще посоветуете |
![]() |
Сообщ.
#19
,
|
|
Описалово есть на его сайте: http://flatassembler.net
|
Сообщ.
#20
,
|
|
|
Цитата Lerm @ 12.04.04, 09:28 Гм. А попробуйте-ка MASM-у подсунуть исходник от NASM-а... Он его правильно поймет? ![]() Согласен. И всё же - объектный формат файлов NASM слишком упрощён. Хотя в этом же и плюс - нет спецкомментариев. Багланд и МелкоМягкий пишут в объектники дополнительную инфу в виде спецкомментариев, являющихся исключительно их собственными недокументированными расширениями. Естественно, эти расширения правильно обрабатываются исключительно их собственными компоновщиками. Но стандартные - то директивы ВСЕ трансляторы должны обрабатывать правильно? В общем, я ругаю NASM исключительно за это, но его охрененный плюс - большое количество поддерживаемых форматов. Да и работает он без установки - скопировал файлик, прописал к нему путь - и юзай. Посему у меня он на втором месте. На первом - TASM (Ideal), на третьем - TASM (MASM), на четвёртом - MASM, FASM, на пятом - Arrow ASM, Wolfware ASM и на шестом - MASM51 А вообще это условно, всё зависит от задачи. |
Сообщ.
#21
,
|
|
|
Помимо списка предложенных ассемблеров, хочу предложить на обсуждение некий асм FRESH.
Кстати на основе FASM. Вчера случайно попал на его демо версию, и знаете - он меня ВПЕЧАТЛИЛ. Помимио интерфейса, имеет хелп FASM в формате .chm Дает возможность простой работы со стандартными компанентами (очень удобно) З.Ы. Кстати может есть у кого последняя версия (и если есть дополнительная инфа по нему) |
Сообщ.
#22
,
|
|
|
Цитата _zss_ @ 14.04.04, 08:39 Помимо списка предложенных ассемблеров, хочу предложить на обсуждение некий асм FRESH. Кстати на основе FASM. Вчера случайно попал на его демо версию, и знаете - он меня ВПЕЧАТЛИЛ. Помимио интерфейса, имеет хелп FASM в формате .chm Дает возможность простой работы со стандартными компанентами (очень удобно) З.Ы. Кстати может есть у кого последняя версия (и если есть дополнительная инфа по нему) Привет Как ведущий разработчик (честь имею) могу сказать что Fresh ето не отдельной ассемблер а как бы "супер-GUI" версия FASM-a. К сожелению, то что пока имееться, ето пре-альфа - т.е. рабочая версия. Конечно она уже можеть делать больше чем FASMW (Я изпользую Fresh для написания Fresh-a так как он - самокомпилирующийся, как FASM) но намного меньше чем задуманно. (А задуманно ето точно как Delphi но для ассемблерa) Кстати, последняя версия у меня есть (пишу я ее точно сейчас) но она не работает, так как все еще до конца не написана. ![]() А обсуждение я приветствую, конечно, ведь хорошие идей всегда от пользу будут. |
Сообщ.
#23
,
|
|
|
Цитата johnfound @ 15.04.04, 00:53 Привет Как ведущий разработчик (честь имею) могу сказать что Fresh ето не отдельной ассемблер а как бы "супер-GUI" версия FASM-a. К сожелению, то что пока имееться, ето пре-альфа - т.е. рабочая версия. Конечно она уже можеть делать больше чем FASMW (Я изпользую Fresh для написания Fresh-a так как он - самокомпилирующийся, как FASM) но намного меньше чем задуманно. (А задуманно ето точно как Delphi но для ассемблерa) Кстати, последняя версия у меня есть (пишу я ее точно сейчас) но она не работает, так как все еще до конца не написана. ![]() А обсуждение я приветствую, конечно, ведь хорошие идей всегда от пользу будут. Большая просьба при получении каких-либо результатов - сообщи (а то уж очень понравилось ![]() З.Ы. Если не сложно, то сбрось пока какой-нибудь материальчик по-нему |
Сообщ.
#24
,
|
|
|
Голосовал за TASM'у. MASM чего-то не полюбил. А т.к. пишу пока только под ДОС, то - TASM. Просто привык. У меня есть несколько ассемблеров, среди них и FASM. Штука, конечно, рульная, но разбираться с ней времени нету, да и под Винду на Асме пока не пишу...
|
Сообщ.
#25
,
|
|
|
Цитата v26*FTP, 16.05.04, 12:35 У меня есть несколько ассемблеров, среди них и FASM. Штука, конечно, рульная, но разбираться с ней времени нету, да и под Винду на Асме пока не пишу... А причем здесь Windows? Под FASM можно написать почти все что угодно: DOS EXE и COM, Windows PE, Linux и MenuetOS.Правда - для Apple програма не получиться. ![]() |
Сообщ.
#26
,
|
|
|
Программа debug из win98
![]() |
Сообщ.
#27
,
|
|
|
FASM - рулит ! И синтаксис почни не отличается от тасмовского, который тоже рулит =)
|
![]() |
Сообщ.
#28
,
|
|
Ну не скажи, отличается
![]() Конечно, не как gas (movl 4,%eax вместо mov eax,4), HLA, Gema (кажется) или что-то типа того, но всё же ![]() |
Сообщ.
#29
,
|
|
|
То есть если программу написанную под TASM, отдать FASM он ее не возмет?
|
![]() |
Сообщ.
#30
,
|
|
Да, придётся исправлять.
Конечно mov останется mov'ом, но вот директивы и некоторые другие вещи (в т.ч. метод обращения к меткам) менять придётся. |
Сообщ.
#31
,
|
|
|
А мне as11 нравится. Под емулятор PDP11.
Features: 1. Поддержка макросов: no 2. Генерация объектного кода: no ( exe only ) 3. Поддержка мультимодульности: no 4. IDE: Yes, win notepad! 5. Поддержка расширенных команд PDP11: yes! ( правда только одна, SOB ) 6. Максимальная длина меток: 5 chars |
Сообщ.
#32
,
|
|
|
Предпочитаю TASM , а про всякие вузы ничего не знаю
![]() |
Сообщ.
#33
,
|
|
|
Цитата myaut @ 18.07.04, 23:50 Программа debug из win98 ![]() ![]() Ай молодца!! Только это не компилятор, но поиграться с ним можно вдоволь:) И ты очень уж сильно урезал область существования этого отладчика, так как этот debug был (и есть) во всех операционных системах от била гейтса начиная с MSDOS 2.0 и заканчивая XP. |
Сообщ.
#34
,
|
|
|
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) протестантизм тоже приветствуется. ![]() |
Сообщ.
#35
,
|
|
|
Вай, вай - давно мертвый и вонючий труп.
А хотиш я тебе щас недостатки твоих любимых и почитаемых FASM и NASM сообщу. Такая предположим ситуация. Мне надо написать прогу под .286. Только не надо здесь выступать что это тоже труп. Это пример ![]() С остальными процами та же ситуация. Пишу значит прогу. Опа - компилирую. И чё?? А ни чё ![]() А почему? А потому что компилятору нельзя указать под какой проц программа. В NASM можно (CPU 286 к примеру)- на XOR EAX,EAX ругается, но я и сам для двойки такого не пишу. А вот переходы что FASM что NASM near спокойно генерируют, которых на двойке и в помине нет. И чё делать - команды в ручную кодировать? Лады - можно везде писать jmp short label, тогда компилятор ругнётся если переход слишком длинный будет. Но это только пример - ещё со многими опкодами проблеммы. А в TASM я спокойно написал .286 и забыл - всё что выходит за рамки указанного проца компилятор сообщает как ошибку. |
Сообщ.
#36
,
|
|
|
Цитата Укажите Ваш любимый ассемблер ![]() ![]() __asm { } ![]() |
Сообщ.
#37
,
|
|
|
cppasm,
Цитата cppasm @ Такая предположим ситуация. Мне надо написать прогу под .286. Только не надо здесь выступать что это тоже труп. А давай предположим, что мне надо написать программу под 8080. Вай-вай-вай, как облажается фасм, он ведь неправильно под нее программу скомпилирует! А вот в тасме я напишу .8080, он на меня ругнется что такого процессора нету, и я пойду спокойно спать. Пример не канает, так как такого барахла как 286е уже нигде нету. Другими словами я не выступаю а _утверждаю_ что 286е такой же труп как и тасм. Кстати, а ты рабочий 286й щас где-нибудь найти можешь? И что б его еще где заюзать надо было? Добавлено cppasm, Цитата cppasm @ А почему? А потому что компилятору нельзя указать под какой проц программа. Кстати, это не проблема. Макросы в фасме разрешают это очень элегантно решить. |
Сообщ.
#38
,
|
|
|
286 врядли, 386 или 486 - легко
![]() Я ничего против FASM и NASM не имею, просто по-моему не стоит априори говорить что TASM умер. Приведи его недостатки что-ли. Я лично пользуюсь под MS-DOS (который по мнению многих тоже умер) и мне нравится. А насчёт макросов - так расскажи как это решить можно. |
Сообщ.
#39
,
|
|
|
Цитата cppasm @ 386 или 486 - легко такого добра навалом даже в прайсах еще видел http://comprice.ru/ |
Сообщ.
#40
,
|
|
|
cppasm,
Цитата cppasm @ 286 врядли, 386 или 486 - легко ![]() ну дык тогда повтори свой вопрос ![]() ![]() Цитата cppasm @ не стоит априори говорить что TASM умер. А я не априори - я констатирую факт. Ок, давай немного разберем что к чему: Сразу предупрежу - я на тасме писал более 4х лет. Потом я его поменял на масм, так как начал активно писать под вынь, на котором просидел тоже довольно долго. Щас я, конечно же (хе-хе, ну скажите что вы про это даже не догадывались ![]() Хе, это была однозначно реклама ![]() Да, и последнее. Не думайте, что наезжая на тасм я наезжаю на всех вас, его юзающих, а, тем более, преуменьшаю его историческую роль (тасмов режим IDEAL в свое время для всех нас был как откровение свыше, etc.). Если Вам хватает и нравится - я совершенно не имею ничего против, есть ведь люди уважающие только debug.exe? Я все это веду к тому, что новички, которые заходят в эту тему выбрать себе лучший инструмент не должны втискивать себя в рамки давно ржавого куска кода. "Он БЫЛ лучшим, так пусть лучшим в нашей памяти и остается". |
Сообщ.
#41
,
|
|
|
К сожалению ты прав - разработчики на него забили, и это меня огорчает.
Но есть ещё WASM, Watcom assembler с совместимым синтаксисом - но опенсорс и вроди развивается, но не так активно как FASM и NASM. Просто FASM лично мне не поднодит, так как не поддерживает OMF, а сишный компилятор, которым я пользуюсь (Open Watcom C/C++), генерирует OMF. Так что прогу я вместе не собиру, или посоветуйте линкер - может есть какой. Конечно можно ещё заюзать coff2omf, но я не пробовал - может он действительно нормально конвертит. Nasm OMF поддерживает, но код практически не оптимизирует. С последних версий есть опция оптимизировать переходы - раньше все генерировал near если явно не указать short. А такие команды как ![]() ![]() mov eax,1 ![]() ![]() mov eax,byte 1 По тем же причинам меня напрягает постоянно отслеживать каждую команду, особенно в больших прогах. Почему компилится скажем та же cpuid если я код хочу под .486 PS: Я кстати тоже загрузчики там всякие на TASM успешно писал, и ядро ОС сейчас на нём же пишу в свободное время. И никаких неудобств не испытываю. |
Сообщ.
#42
,
|
|
|
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 ![]() ![]() @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 |
Сообщ.
#43
,
|
|
|
Он бинарники чистые не шарит генерировать, а мне надо
![]() Насчёт макросов - прикольно, но это ж с каждой командой так париться. И как всё-таки short и near jmp отличать таким макаром. |
Сообщ.
#44
,
|
|
|
Да, и еще. Некоторые 486е cpuid все-же поддерживают. Так что пользуй регистр флагов для идентификации - можно или нет
![]() |
Сообщ.
#45
,
|
|
|
Да я так и делаю, это просто пример неудачный.
![]() |
Сообщ.
#46
,
|
|
|
cppasm,
Цитата cppasm @ Он бинарники чистые не шарит генерировать, а мне надо ![]() Ну ты совсем обижаешь начальник: Compiling .ASM-source directly into a .TGA image with fasm!! |
Сообщ.
#47
,
|
|
|
Дык это я про Watcom Linker писал, что FASM и NASM умеют - это мне известно.
![]() |
Сообщ.
#48
,
|
|
|
Uri, да макросы, это конечно хорошо, но вы же не станете так делать для каждой инструкции. допустим, мне надо написать прогу под p2, а я по своей глупости использую инструкции sse, не делать же макросы ко всему набору инструкций?
|
Сообщ.
#49
,
|
|
|
Цитата а я по своей глупости использую инструкции sse? Следует ли из етого что умному ФАСМ лучше? ![]() ![]() |
Сообщ.
#50
,
|
|
|
Если ты постоянно будешь контролировать каждую команду в программе (а каждую ты не сможешь - пример те же переходы, которые генерирует сам компилятор и тебя не спрашивает near/short) то возможно да
![]() А ты все команды помнишь начиная с какого семейства процессоров появились, или ты каждую команду в справочнике смотреть будешь? По ходу разработка затянется... ![]() |
Сообщ.
#51
,
|
|
|
Цитата 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!, а вот решать какую процедуру надо звать, решаеться во время выполнения... |
Сообщ.
#52
,
|
|
|
В институте заставляют... Только нифига интересного в нем не нахожу
![]() Абсолютно тупой - в этом его огромный плюс... Что напишешь то и получишь.. |
![]() |
Сообщ.
#53
,
|
|
Ты это о чём, собственно?
|
Сообщ.
#54
,
|
|
|
А где Z-80
Это самый классный ассемблер Самые толковые команды |
Сообщ.
#55
,
|
|
|
FASM!!!!!!
|
Сообщ.
#56
,
|
|
|
Цитата [500mhz] @ вот чем мне фасм нравится там все в одном флаконе и компилер и линкер Это большой недостаток. Я частенько пишу на тасме, а линкую сторонним линкером, например ваткомовским ![]() Цитата Uri @ Кстати, а ты рабочий 286й щас где-нибудь найти можешь? И что б его еще где заюзать надо было? У нас в одном цеху тройки стоят, и менять их просто не на что, любой современный загнется через пару недель от пыли, мазута, жары и плохого настроения работяг ![]() ![]() Цитата cppasm @ Я лично пользуюсь под MS-DOS (который по мнению многих тоже умер) Это не дос умер, это мозги у некоторых умерли ![]() Цитата Uri @ Заметь, спроектирован "под ДОС", а не под "Ассемблер х86". ![]() Цитата Uri @ Жалкие потуги добавить в тасм высокоуровневую функциональность (+ поддержка программирования под Windows) с треском провалились Слова, слова... Можно поконкретнее? ИМХО в тасме высокоуровневых средств больше чем в любом другом, хотя он и дедушка уже ![]() Цитата Uri @ (прошу оценить объемы работ по написанию реализации макросредствами MMX, SEE и т.д. команд). Эээээ... о каком объеме речь? Цитата Uri @ Разработчики давным-давно забили боольшущий болт на тасм Да? Не надо панику сеять, они забили на него как на отдельный продукт, но он идет в комлекте с тем же Си. Цитата Uri @ Практически полное отсутствие библиотек. Даже (подчеркиваю - Даже) для Windows Ты просто не умеешь их готовить © ![]() ![]() Цитата Uri @ Вот попробуйте сделать на тасме и на фасме следующие примеры и сравните: простой COM, простой EXE, мультисегментный EXE, простой резидент, и, главное, DPMI (то-есть смешанный 16- и 32-битный код)? Что то я не пойму, в чем здесь проблема? ![]() ![]() ideal model ххххх dataseg .... udataseg .... codeseg start: startupcode .... .... end start Получится COM или ЕХЕ, в зависимости от модели ![]() ![]() ![]() А если по существу, то вот некоторые достоинства тасма: 1. развитая поддержка всевозможных моделей памяти и ЯВУ. 2. режим IDEAL ![]() 3. упрощенные директивы, такие как CODESEG, DATASEG, UDATASEG, STARTUPCODE и прочее. 4. ни в одном асме нет такой удобной поддержки высокоуровневых средств. например вызов подпрограмм с параметрами, или вызов метода объекта, локальные переменные. 5. оптимизация переходов. не нужно гадать какой переход ставить, тасм сам все подставит ![]() 6. кто сказал что под виндовс он не удобен? берешь инклюды масма и подключаешь ![]() 7. ни в одном асме нет такого удобного способа объявлять подпрограммы и типы данных - TYPEDEF и PROCDESC. 8. после бессонной ночи трудно еще что то припомнить, потому пока останавлюсь ![]() Uri, а в фасме есть что то типа GLOBAL? Незаменимая штука в многомодульных проектах. А масмовский баг (mov ax,[0]) как в фасме компилится? |
Сообщ.
#57
,
|
|
|
назло всем юным фанбоям фасма, победил TASM ;)
|
Сообщ.
#58
,
|
|
|
Цитата Uri @ Практически полное отсутствие библиотек. Даже (подчеркиваю - Даже) для Windows Здесь лежит конвертер(с сорсами) масмовских инклюдов в тасмовские под режим IDEAL, и естественно сам windows.inc с примером ![]() http://www.mujweb.cz/www/komsbomb/ А также множество других интересных примеров (все под тот же IDEAL) ![]() Так что Тасм жив! |
Сообщ.
#59
,
|
|
|
Голосовал за 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 такого сказать нельзя. |
Сообщ.
#60
,
|
|
|
Если уж про аналоги говорить, то есть такой Lazy Assembler. Совместим с тасм IDEAL. Поддержка инструкции вплоть до SSE4 и много еще чего интересного. И до сих пор развивается.
Добавлено Но все равно предпочитаю проверенный временем тасм. А линкеры при необходимости можно и подобрать. |
Сообщ.
#61
,
|
|
|
gas рулит, равно как и AT&T синтаксис
|
Сообщ.
#62
,
|
|
|
Цитата MAKCim @ gas рулит, равно как и AT&T синтаксис В принципе кто к чему привык... Единственное - но это уже не проблеммы AT&T синтаксиса - встроенный асм ужасно сделан в gcc. Потому его недолюбливаю ![]() |
Сообщ.
#63
,
|
|
|
cppasm
Цитата cppasm @ встроенный асм ужасно сделан в gcc. почему ужасно? |
Сообщ.
#64
,
|
|
|
Потому что выглядит убийственно.
Нафига ассемблерный листинг оформлять в виде строковых констант? Т.е. ну круглые скобки или фигурные - это в принципе ерунда. Но писать так: ![]() ![]() asm( "movl [esp+4],ebx\n movl [esp+8],eax\n addl ebx,eax\n ret\n" ); Я понимаю что gcc компилеру так проще всё это передавать gas на обработку. Но выглядит ужасно. Лично мне не нравится. |
Сообщ.
#65
,
|
|
|
наверное так все же
![]() ![]() ![]() asm( "movl 4(%esp), %ebx\n\ movl 8(%esp), %eax\n\ addl %ebx, %eax\n\ ret" ); Цитата Но выглядит ужасно. Лично мне не нравится. ну да, тут в принципе на любителя |
Сообщ.
#66
,
|
|
|
Цитата MAKCim @ наверное так все же ![]() Угу ![]() Писал на быструю руку. А часто я им не пользуюсь, так что как уж по памяти получилось ![]() Цитата MAKCim @ ну да, тут в принципе на любителя ![]() Просто gas нормально воспринимаю, как и AT&T - просто по началу непривычно. А вот зачем во встроенном асме разработчики такой огород нагородили - мне не совсем понятно... |