Другие языки программирования и технологии

Добрый день. Подскажите пожалуйста плюсы и минусы ассемблера тасм, а так же его преимущества, например перед фасмом?

Тасм Плюсы и Минусы.
Преимущества и недостатки.
Если сравнивать только TASM и FASM между собой, то
TASM.
Плюсы:
1. Огромное количество документации, примеров, руководств, справочников. Особенно при написании программ для MS-DOS.
2. Создаёт под DOS объектные файлы, а не сразу исполняемые, которые можно впоследствии линковать с другими объектными файлами, даже написанными на других языках программирования.
3. Поддерживает, являющийся стандартом де-факто, синтаксис MASM.
Минусы:
1. Последняя версия 5.4 выпущена в 2010 году.
2. Создаёт объектные файлы формата OMF, который многие современные линковщики уже не понимают.
3. Не поддерживает расширения системы команд процессора, кроме MMX.
4. Не может компилировать программы для 64-х разрядных процессоров (x86-64).
5. Более бедные в сравнении с FASM средства макропрограммирования.
6. В стандартный набор не входят библиотеки импорта функций WinAPI последних версий Windows.
7. Без дополнительных средств может создавать программы только для DOS и Windows.
8. Платный, пропиетарный.
9. Для создания программ DOS и Windows необходимо использовать разные файлы компилятора, tasm.exe и tasm32.exe соответственно.
И плюс, и минус: Заменяет не имеющиеся в системе команд указанного процессора инструкции на цепочки команд, выполняющие требуемые действия. Например для процессора i8086 сымитирует команды push 5, и shl ax, 3. MASM в этом случае просто выдаст сообщение об ошибке.

FASM.
Плюсы:
1. Регулярный выход новых версий. На текущий момент (24.07.14) последняя версия 1.71.21 от 23 июля 2014 года.
2. Богатый язык макросов, позволяющий писать почти как на языках высокого уровня.
3. Кроссплатформенный.
4. Поддерживает системы команд, включая их расширения, всех современных процессоров семейства i80x86.
5. Может создавать 16-ти, 32-и и 64-х разрядные приложения.
6. Бесплатный с открытым кодом.
Минусы:
1. Не может создавать объектные файлы для DOS-программ.
2. Очень скудная документация. Имеющиеся в Интернете "уроки" (само название руководств уроками уже говорит о невысоком уровне квалификации их авторов) ограничиваются простыми 16-разрядными программами для MS-DOS COM-формата.
3. Не имеет возможности задавать тип целевого процессора.
4. Не умеет автоматически создавать секцию импорта функций. Этот недостаток устраняется самостоятельным написанием inc-файлов.
И плюс, и минус: Всегда оптимизирует машинный код по размеру файла, что в редких случаях может привести к непредсказуемому поведению, когда адреса переходов вычисляются в процессе работы программы.

Что касается упомянутого riv'ом НАСМ'а, то несмотря на заявления разработчиков, в нём очень много ошибок и для процессоров x86-64 он создаёт не полностью совместимый код. Поэтому вместо NASM лучше использовать YASM. Последний полностью совместим с NASM, но имеет более широкие возможности и полную поддержку 64-x разрядных приложений. Известные ошибки NASM в YASM исправлены.
Алексей Чигаткин
Алексей Чигаткин
51 590
Лучший ответ
nasm + удобный синтаксис, бесплатен, написано несколько хороших и интересных проектов.

тасм и фасм не слыхал даже, потому минусов в сравнении с ним не знаю :)
Олег Логачёв
Олег Логачёв
7 591