Сравнительный анализ TASM и FASM - Студенческий научный форум

XIII Международная студенческая научная конференция Студенческий научный форум - 2021

Сравнительный анализ TASM и FASM

Шекян А.А. 1, Абрамова О.Ф. 1
1Волжский политехнический институт (филиал) ВолгГТУ
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение

Программирование на языках высокого уровня существует уже давно, но если считать только саму историю программирования, то языки высокого уровня (Fortran, Lisp, Pascal, C и т.д.) являются языками третьего поколения. Им предшествовали сам язык машинных команд, когда все команды задавались в понятной для компьютера форме (шестнадцатеричной), и язык ассемблера, который можно назвать самым первым полноценным языком программирования. Одно из его самых значимых особенностей — это то, что он организует понятную связь напрямую от процессора к программисту. Человеку сложно воспринимать машинный код, а компьютеру в свою очередь сложно понимать человеческую речь. Язык ассемблера заложил фундамент между полноценным общением человека с машиной. Об языках ассемблера и пойдет речь в этой статье.

Ассемблерные языки

Появление низкоуровневых языков программирования упростило написание программ и интерфейсов для операционных систем. Язык ассемблера дал начало другим языкам программирования. Но и сейчас этот язык занимает свое место в мире компьютеров.

Самыми известными языками ассемблера являются TASM, MASM, FASM и другие. В отличие от высокоуровневых языков программирования, в которых многие проблемы реализации алгоритмов скрыты от разработчиков, язык ассемблера тесно связан с средой микропроцессора, его памятью и системой команд. Благодаря ему появилась возможность написания программы командами, состоящими из символов приближенных к обычному языку.

После появление высокоуровневых языков популярность ассемблера снизилась, но он остался популярным в узких кругах. Сейчас его используют в написании отдельных фрагментов программ, с использованием программирования на языке ассемблера можно добиться наиболее быстрого исполнения программы, что играет важную роль в разработке драйверов, антивирусов, трансляторов и так далее.

В этой статье мы проведем сравнительный анализ TASM (Turbo Assembler) и FASM (Flat Assembler) – ассемблерных языков, имеющих каждый свою историю и уникальный синтаксис.

TASM

Turbo Assembler, сокращенно TASM, был разработан Borland International в 1988 году для конкуренции с MASM от Microsoft. Одна из причин, по которой TASM стал популярным, заключалась в том, что он был включен в пакет Turbo C, а затем продукты Borland C/C++. Как язык, разработанный Borland International, TACM может работать совместно с другими продуктами компании – Turbo C и Turbo Pascal.

Он совмещает в себе и удобство, и простоту, и обладает высокой скоростью выполнения. TASM до сих пор используется для обучения программированию на языке ассемблера под архитектуру 32 битных систем. Пакет TASM поставляется вместе с компоновщиком Turbo Linker и порождает код, который можно отлаживать с помощью Turbo Debugger.
По умолчанию TASM работает в режиме совместимости с другим распространённым ассемблером – MASM. Это позволяет, хоть и не во всех случаях, запускать файлы на языке ассемблера MASM средствами языка TASM. Кроме того, последний имеет в себе режим IDEAL, улучшающий синтаксис языка и расширяющий его функциональные возможности.

Так как Borland International снял с себя поддержку и обновления TASM, он не поддерживает 64 битные операционные системы

FASM

Flat Assembler, сокращенно FASM, – это быстрый компилятор языка ассемблера для процессоров архитектуры x86, написанный Томашем Грыштаром, который выполняет несколько проходов для оптимизации размера сгенерированного машинного кода. Он самокомпилирован и предоставляет версии для разных операционных систем. Все версии предназначены для использования из командной строки системы и не должны отличаться по поведению.

FASM является кроссплатформенным, обладает открытым исходным кодом, красивым синтаксисом, а так же бесплатный для скачивания. Особенностью данного ассемблера является то, что он написан сам на себе. Логика этого ассемблера независима от операционной системы. FASM реализован в нескольких вариациях отличающихся только интерфейсом взаимодействия с пользователем и окружением операционной системы.

У этого транслятора много отличительных особенностей.

FASM стремится использовать минимально возможный набор директив препроцессора, т.е. в предустановленном наборе директив не допускается внедрение новых директив, функциональность которых может быть достигнута имеющимся набором директив.

FASM многопроходный ассемблер с оптимистическим предсказанием, т.е. на первом же проходе ассемблер делает предположение, что все инструкции принимают свою минимально возможную по размеру форму.

FASM не включает в выходной файл объявления не используемых процедур (реализовано посредством макрокоманд).

Исходный код для FASM может собираться сразу в исполняемый файл минуя стадии создания промежуточных объектных файлов и их компоновки.

Сравнительный анализ FASM и TASM

Для начало определим те критерии, по которым будем сравнивать оба вышеупомянутых языка ассемблера. Критерии описаны в списке ниже, вместе с кратким обоснованием его выбора.

Поддержка операционными системами – чем большую аудиторию по использованным операционным системами охватит язык программирования, тем большую популярность сообщества он получит. Так же поддержка множества платформ означает кроссплатформенность, что является весомым доводом в пользу языка.

Простота развертывания компилятора и запуска программ – показатель того, сколько шагов требуется для того, чтобы превратить исходный код в полноценную исполняемую программу. Слишком запутанный процесс превращения исходного кода в исполняемую программу может отрицательно сказаться на заинтересованности теми людьми, не имеющими опыта с языками ассемблера.

Поддержка языковых конструкций высокого уровня – важный показатель, определяющий возможность расширения базовых конструкций языка до конструкций высокого уровня. Такие функции могут помочь значительно упростить изучение языка ассемблера и помочь вам написать более читаемый код. Некоторые ассемблеры предоставляют очень ограниченные возможности высокого уровня.

Сходство между подобными языками ассемблера – показатель того, как язык ассемблера похож на другие и какая между ними взаимосвязь. Это так же важно для новичков, которые только изучают язык ассемблера, не смогут конвертировать исходный код из одного ассемблера в другой. 

Доступность документации – важный параметр, определяющий количество документации и учебных материалов по конкретному языку ассемблера, и влияющий на порог вхождения программистов в язык и сложность написания программ новичками.

Идентичность синтаксиса стандартной нотации Intelпоказатель того, как язык соответствует системе команд процессора x86. Это показатель того, как идентично язык реализует команды одной из самой популярной архитектуры процессоров.

Для наглядности сравнения будет составлена таблица.

Таблица 1. Сравнение языков ассемблера FASM и TASM

FASM

TASM

Поддержка операционными системами

Поддерживается семействами операционных систем Windows, Dos, Linux и BSD

Используется только на операционных системах Windows и Dos

Продолжение таблицы 1.

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

Текст программы сразу превращается в исполняемую программу.

Текст программы превращается в промежуточную форму, которая называется объектным модулем, а на этапе компоновки один или несколько модулей комбинируются в выполняемую программу.

Поддержка языковых конструкций высокого уровня

Ограничен макросами

Считается языком ассемблера высокого уровня

Сходство между подобными языками ассемблера

Совершенно несовместим с другими языками ассемблера

MASM и TASM обеспечивают обратную совместимость исходного кода.

Доступность документации

Автор FASM описывает новые функции на официальном сайте, которые он добавляет в язык. Так же автор FASM не является носителем английского языка, что замедляет распространение документации в мировом сообществе.

Компания Borland International предоставила отличное справочное руководство, а также существуют справочные руководства сторонних производителей для TASM.

Идентичность синтаксиса стандартной нотации Intel

Flat assembler по умолчанию использует синтаксис ассемблерных инструкций Intel, так же возможно переопределение с помощью макросов.

TASM использует только синтаксис ассемблерных инструкций Intel для 16-битных и 32-битных систем.

Сравнив два языка ассемблера по вышеуказанным критериям, можно сделать однозначный вывод, что два языка одинаково подходят для изучения теми людьми, кто только знакомится с языком ассемблера и системой команд процессора Intel x86, а каждый продвинутый разработчик сможет выбрать из этих двух языков ассемблера наиболее подходящий для решения его задачи.

Заключение

Язык ассемблера полноправно занимает нишу в современном мире технологий. Его история длится уже почти половину века и за это время язык ассемблера стал фундаментом для всей той массы языков программирования, которая используется в современном мире.

Выполнив сравнительный анализ языков ассемблера TASM и FASM я пришла к выводу, что оба этих языка занимают свою, предназначенную только для него нишу, и выполняют возложенные на них функции. Каждый из них имеет свои плюсы и минусы, но они оба пользуются огромной популярностью в кругах программистов на языке ассемблера. Как TASM, так и FASM требуются для написания тех программ, где их возможности полностью раскрываются. Язык ассемблера TASM является крупным продуктом Borland International, аFASM был написан одним человеком, и это очень красочно характеризует, что в информационных технологиях главенствуют идеи, а не крупные корпорации.

Библиографический список

1. Абрамова О.Ф. Методика организации практических занятий с использованием ролевого подхода и case-заданий [Электронный ресурс] / О.Ф. Абрамова // Санкт-Петербургский образовательный вестник : электрон. науч.-практ. журнал. - 2017. - № 8 (12). - C. 9-15. – Режим доступа : http://ru.calameo.com/read/005072235e4dd2e099704.

2. http://staff.mmcs.sfedu.ru/~ulysses/Edu/MP/WhichAsm.html [Электронный ресурс]

3. Голубь Н.Г. Искусство программирования на Ассемблере /Н.Г. Голубь. — 2-е изд. — СПб: ООО"ДиаСофтЮП", 2002. — 656с

4. Абрамова О.Ф. Исследование методов и разработка модуля оценивания конкурсных материалов для информационной веб-системы проведения олимпиад, адаптированной к задачам конечного пользователя [Электронный ресурс] / О.Ф. Абрамова // 16-я научно-практическая конференция профессорско-преподавательского состава ВПИ (филиал) ВолгГТУ (г. Волжский, 23-27 января 2017 г.). В 2 ч. Ч. 2 / под ред. С.И. Благинина ; ВПИ (филиал) ВолгГТУ. - Волгоград, 2017. - C. 149-158. – Режим доступа : http://www.volpi.ru/files/science/science_conference/16npkpps/16npkpps_pt2.pdf.

5. Абрамова О.Ф. CASE-технологии: изучать или исключить? / О.Ф. Абрамова // Almamater (Вестник высшей школы). - 2012. - № 9. - C. 109-110.

6. Калашников О. А. Ассемблер? Это просто! Учимся программировать. – СПб.: БХВ-Петербург, 2005. – 384 с.

Просмотров работы: 204