Статья опубликована в рамках: CIV Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 09 августа 2021 г.)
Наука: Информационные технологии
Скачать книгу(-и): Сборник статей конференции
дипломов
ОСОБЕННОСТИ И РАЗЛИЧИЯ ПОДХОДОВ К СОСТАВЛЕНИЮ ПРОГРАММ НА ЯЗЫКЕ АССЕМБЛЕР ПОД РАЗЛИЧНЫЕ ПЛАТФОРМЫ
FEATURES AND DIFFERENCES OF APPROACHES TO CREATING PROGRAMS IN THE ASSEMBLER LANGUAGE FOR DIFFERENT PLATFORMS
Elizaveta Talalaikina
student, Faculty of Computer Science and Information Technologies, Saratov State University,
Russia, Saratov
Iurij Laptev
student, Faculty of Computer Science and Information Technologies, Saratov State University,
Russia, Saratov
Alexander Trunov
scientific advisor, PhD in Physics and Mathematics, assistant, Faculty of Computer Science and Information Technologies, Saratov State University,
Russia, Saratov
АННОТАЦИЯ
В данной статье описываются особенности подходов к составлению программ на языке ассемблер под Windows и Linux, а также их различия.
ABSTRACT
This article describes the features of approaches to compiling assembly language programs for Windows and Linux, as well as their differences.
Ключевые слова: ассемблер; операционные системы; Windows; Linux; MASM; FASM; YASM.
Keywords: assembler; OS; Windows; Linux; MASM; FASM; YASM.
Семейство языков программирования Ассемблер являются языками низкого уровня. Также Ассемблером называют трансляторы текста на языке ассемблер, в программу на машинном языке.
Трансляторы с языка ассемблер специфичны для конкретной архитектуры и операционной системы. Также синтаксис каждого из трансляторов отличен, поскольку работают с мнемониками машинных инструкций определенного процессора. Некоторые из трансляторов могут быть мультиплатформенными. В данной статье будут рассмотрены особенности и различия следующих трансляторов: MASM, TASM, NASM.
MASM является транслятором компании Microsoft, который был изначально разработан для создания операционной системы MS-DOS, а позднее для Windows 9x/NT. В современном мире данный транслятор используется для создания драйверов под Windows. MASM не является мультиплатформенными транслятором и предназначен только для архитектур х86 16/32, х86-64.
Ниже приведен пример кода для данного транслятора:
.586P
.model flat, stdcall
_data segment
_data ends
_text segment
start:
ret
_text ends
end start
В дальнейшем мы увидим различия в структурах написания программ для разных трансляторов.
FASM расшифровывается как flat assembler. Данный транслятор разработан Томасом Гриштаром. Данный транслятор распространяется в исходных текстах на бесплатной основе и к настоящему моменту перенесен на MS-DOS, Windows9x/NT, Linux, BSD.
К преимуществам данного транслятора можно отнести то, что он мультиплатформенный, поддерживает уникод и все х86 процессоры вплоть до Pentium-4. FASM позволяет обходиться без линкера, при этом раскладку секций в PE-файле и таблицу импорта нужно создавать вручную.
К минусам данного транслятора можно отнести специфический синтаксис и отсутствие строго структурированной документации. FASM не генерирует отладочную информацию и как следствие невозможно рассматривать данный транслятор как серьезный инструмент.
Ниже приведен пример кода для данного транслятора, выводящего в командную строку «Hello world»:
include 'win32ax.inc'
.code start:
invoke MessageBox,HWND_DESKTOP,"Hello world",invoke GetCommandLine,MB_OK invoke ExitProcess,0
.end start
Структура кода данного транслятора отличается от остальных имеющихся трансляторов и позволяет писать программы, имеющие меньший размер.
YASM является свободно распространяемым транслятором под Unix-подобные системы. Лицензируется под лицензией BSD и в настоящее время развивается Питером Джонсоном и Майклом Ерманом.
Основными отличиями, от предшествующего его NASM, являются: поддержка платформы AMD х86-64, оптимизированный парсер, генерация отладочной информации в формате CodeView.
Ниже представлен пример кода для данного транслятора, выводящий «Hello world»:
%include "stud_io.inc"
global _start
section .text
_start: mov eax, 0
again: PRINT "Hello world"
PUTCHAR 10
inc eax
cmp eax, 5
jl again
FINISH
Синтаксис данного транслятора достаточно простой и мало отличается от остальных трансляторов.
Таким образом, при написании программ на языке Ассемблер, стоит учитывать архитектуру и операционную систему, на которой данная программа должна работать, а также сложность обучения языка транслятора, на котором будет вестись разработка.
Список литературы:
- Специфические особенности языка ассемблер [электронный ресурс] — Режим доступа. — URL: http://skachivaem.ru/articles/9-2008-09-18-15-17-46/213-2009-07-21-20-46-40.html (дата обращения 12.02.2021)
- MASM для x64 (ml64.exe) [электронный ресурс] — Режим доступа. — URL: https://docs.microsoft.com/ru-ru/cpp/assembler/masm/masm-for-x64-ml64-exe?view=msvc-160 (дата обращения 23.03.2021)
- flat assembler [электронный ресурс] — Режим доступа. — URL: https://flatassembler.net/ (дата обращения 23.03.2021)
- The Yasm Modular Assembler Project [электронный ресурс] — Режим доступа. — URL: https://yasm.tortall.net/ (дата обращения 04.04.2021)
дипломов
Оставить комментарий