Имя файла программы в машинных кодах выполняемый файл имеет расширение какое

Обновлено: 04.07.2024

Совокупность методов и средств, регламентирующих взаимодействие работников с техническими средствами и между собой в процессе разработки и эксплуатации информационной системы, относится к ___________ обеспечению АСУ

Информатика

Компьютерная сеть, связывающая абонентов одного или нескольких соседних зданий, является

Информатика

Процесс сбора и накопления информации о событиях, происходящих в информационной системе, называется

Информатика

Информатика

Информатика

Ссылка на объект, средство быстрого доступа к объекту, расположенному в какой-либо папке на диске компьютера или в сети, – это

Информатика

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

Информатика

В дереве папок Windows, отображаемом в левой области окна проводника, на верхнем уровне иерархии находится папка

Информатика

Информатика

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

Информатика

Адрес ячейки электронной таблицы, находящейся на пересечении второго столбца и третьей строки

Информатика

Установите соответствие между символом и его назначением в меню Windows

работа с текстовыми файлами, не требующими сложного форматирования

работа с текстовыми файлами, не требующими форматирования и не превышающими по размеру 64 Кбайт

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

Информатика

Информатика

поддержка системой нескольких одновременно работающих пользователей

структура мультиплексированных каналов передачи данных

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

представление информации в виде комбинации звука, графики, мультипликации и видео

Информатика

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

Информатика

Чтобы выделить в окне проводника сразу несколько объектов, расположенных в произвольном порядке, надо удерживать в процессе их выделения клавишу

Информатика

Если установить курсор за последним символом первого абзаца документа и нажать на клавишу Delete, то

два абзаца объединятся в один, то есть второй абзац станет продолжением первого

будет уничтожена вся последняя строка первого абзаца

Информатика

Информатика

Информатика

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

компьютер, хранящий данные и программы для коллективного использования

Информатика

Совокупность правовых норм, определяющих создание, юридический статус и функционирование информационных систем, регламентирующих порядок получения, преобразования и использования информации, относится к _____________ обеспечению АСУ

Исполняемый файл - словосочетание, довольно часто встречающееся, в основном, в документации. В живом общении (в том числе и в виртуальном) для обозначения данного вида файлов пользователи используют менее громоздкие термины, более точно отражающие, что именно они имеют в виду.

Итак, что же скрывается за этим словосочетанием? Исполняемыми файлами называются файлы, содержащие в себе готовые к запуску компьютерные программы. В зависимости от того, в каком виде записана программа в исполняемом файле, выделяют две большие подгруппы файлов данного класса. Первая подгруппа - это бинарные файлы; они содержат в себе запись программы в виде специальных машинных кодов, которые, чаще всего, передаются непосредственно процессору. Такие файлы ещё сокращённо называют бинарниками. В противоположность им существуют исполняемые файлы, в которых программа записана в виде текста - то есть, в том самом виде, в каком с ней работал создавший её программист. Такие исполняемые файлы называют скриптами. Также этот термин нередко употребляют и по отношению к самим программам, которые хранятся в подобных файлах.

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

В Windows наиболее распространены бинарные исполняемые файлы. Самый часто встречающийся их вид - это приложение. Приложения имеют расширения EXE и могут запускаться самостоятельно. Помимо них, существуют динамические библиотеки (их расширение - DLL), которые содержат в себе общие для разных приложений функции. Ещё есть драйверы (DRV или VXD) - специальные программы, нужные для того, чтобы система могла взаимодействовать с конкретными моделями тех или иных устройств. Исполняемые файлы (в Windows особенно) могут зависеть друг от друга: например, для запуска любого приложения нужны определённые системные динамические библиотеки, а им, в свою очередь, нужны драйверы.

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

  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents Loading

Copy raw contents

Copy raw contents

Лабораторная работа №1. Первая программа на языке ассемблера

Краткие теоретические сведения

Структура ассемблерной программы

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

Синтаксис ассемблера NASM , которым мы будем пользоваться далее, является регистрочувствительным. Т.е. есть разница между большими и малыми буквами.

Команда может быть директивой — указанием транслятору, которое выполняется в процессе превращения программы в машинный код. Многие директивы начинаются с точки. Для удобства чтения программы они обычно пишутся БОЛЬШИМИ БУКВАМИ. Кроме директив еще бывают инструкции — команды процессору. Именно они и будут составлять машинный код программы.

Особенности создания ассемблерной программы

На платформе Linux язык ассемблера является самым низкоуровневым языком программирования. Т.е. он больше любых других приближен к архитектуре ЭВМ и ее аппаратным возможностям, позволяет получить к ним более полный доступ, нежели в языках выского уровня, наподобие C/C++, Perl, Python и пр. Заметим, что получить полный доступ к ресурсам компьютера в современных архитектурах нельзя, самым низким уровнем работы прикладной программы является обращение напрямую к ядру ОС. Именно на этом уровне и работают программы, написанные на ассемблере в Linux. Но, в отличие от языков высокого уровня (ЯВУ), ассемблерная программа содержит только тот код, который ввел программист, и конечно же вся ответственность за логичность кода полностью лежит на плечах программиста.

Простой пример. Обычно подпрограммы заканчиваются командой возврата. Если в ЯВУ ее не задать явно, транслятор все равно добавит ее в конец подпрограммы. Ассемблерная подпрограмма без команды возврата не вернется в точку вызова, а будет выполнять код, следующий за подпрограммой, как будто он является ее продолжением.

Эти особенности приводят к тому, что ассемблерные программы часто «подвешивают» компьютер, особенно у начинающих программистов. Выделим разновидности «зависания» по способу борьбы с ним.

  • Простое — для выхода из него достаточно нажать Ctrl+C (сначала нажимается клавиша Ctrl, и дальше нужно, не отпуская ее, нажать вторую клавишу — C; затем клавиши отпускаются в любом порядке). Программа при этом аварийно завершается выходом в ОС.
  • Мягкое — кажется, что машина никак не реагирует на клавиатуру и безнадежно зависла. В любом случае, ядро системы при этом продолжает работать и позволяет использовать базовые функции для сохранения целостности данных. Этими функциями можно управлять при помощи т. н. Magic Keys (см. описание SysRq Keys).
  • Жесткое — если зависло ядро ОС. Это может случиться в случае использования тестового ядра, находящегося в разработке, или при неправильной ручной сборке ядра, или при попытке использовать недокументированные особенности аппаратного обеспечения. В этом случае поможет аппаратный сброс при помощи кнопки «Reset», расположенной на передней панели системного блока.

Важно помнить, что в 90% случаев зависание является простым. Чаще всего не хватает аппаратных возможностей компьютера для быстрой обработки данных и необходимо просто подождать или нажать Ctrl+C.

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

Из-за специфики программирования, а также по традиции, для создания программ на языке ассемблера обычно пользуются утилитами командной строки (хотя поддержка ассемблера и есть в некоторых универсальных интегрированных средах). Весь процесс технического создания ассемблерной программы можно разбить на 4 шага (исключены этапы создания алгоритма, выбора структур данных и т.д.).

  1. Набор программы в текстовом редакторе и сохранение ее в отдельном файле. Каждый файл имеет имя и тип, называемый иногда расширением. Тип в основном используется для определения назначения файла. Например, программа на C имеет тип c , на Pascal — pas , на языке ассемблера — asm .
  2. Обработка текста программы транслятором. На этом этапе текст превращается в машинный код, называемый объектным. Кроме того есть возможность получить листинг программы, содержащий кроме текста программы различную дополнительную информацию и таблицы, созданные транслятором. Тип объектного файла — o , файла листинга — lst . Этот этап называется трансляцией.
  3. Обработка полученного объектного кода компоновщиком. Тут программа «привязывается» к конкретным условиям выполнения на ЭВМ. Полученный машинный код называется выполняемым. Кроме того, обычно получается карта загрузки программы в ОЗУ. Выполняемый файл обычно не имеет расширения в отличие от программ ОС семейства DOS и Windows, карта загрузки — map . Этот этап называется компоновкой или линковкой.
  4. Запуск программы. Если программа работает не совсем корректно, перед этим может присутствовать этап отладки программы при помощи специальной программы — отладчика. При нахождении ошибки приходится проводить коррекцию программы, возвращаясь к шагу 1.

Таким образом, процесс создания ассемблерной программы можно изобразить в виде следующей схемы. Конечной целью, напомним, является работоспособный выполняемый файл hello (см. рис. [pic:l1]).

Основные возможности текстового редактора mcedit

mcedit — это текстовый редактор, встроенный в двухпанельный файловый менеджер Midnight Commander. Сама по себе среда Midnight Commander (или просто mc ) очень схожа с другими «командерами». Например, чтобы создать в текущем каталоге файл lab1.asm и начать его редактирование, можно набрать:

Общий вид командной строки для запуска:

mcedit [-bcCdfhstVx?] [+число] file

+число переход к указанной числом строке (не ставьте пробел между знаком + и числом)
-b черно-белая цветовая гамма
-c цветовой режим ANSI для терминалов без поддержки цвета
-d отключить поддержку мыши
-V вывести версию программы

mcedit — это полноценный полноэкранный редактор, позволяющий редактировать файлы размером до 64 Мб, с возможностью редактирования бинарных файлов. Основными возможностями являются: копирование блока, перемещение, удаление, вырезка, вставка; отмена; выпадающие меню; вставка файлов; макро-команды; поиск регулярных выражений и их замена; подсветка синтаксиса; перенос по словам; изменяемая длина табуляции; использование перенаправления потоков для применения, например, проверки орфографии при помощи ispell.

Редактор крайне прост в использовании и может быть использован без предварительного изучения. Выпадающее меню вызывается клавишей F9. Список наиболее часто используемых горячих клавиш приведен ниже (Ctrl и Shift обозначают соответствующие клавиши клавиатуры, Meta — условное обозначение для набора мета-клавиш, на современном компьютере это обычно Alt или Esc):

F3 Начать выделение текста. Повторное нажатие F3 закончит выделение
Shift+F3 Начать выделение блока текста. Повторное нажатие F3 закончит выделение
F5 Скопировать выделенный текст
F6 Переместить выделенный текст
F8 Удалить выделенный текст
Meta+l Переход к строке по её номеру
Meta+q Вставка литерала (непечатного символа). См. ниже
Meta+t Сортировка строк выделенного текста
Meta+u Выполнить внешнюю команду и вставить в позицию под курсором её вывод
Ctrl+f Занести выделенный фрагмент во внутренний буфер обмена mc (записать во внешний файл)
Ctrl+k Удалить часть строки до конца строки
Ctrl+n Создать новый файл
Ctrl+s Включить или выключить подсветку синтаксиса
Ctrl+t Выбрать кодировку текста
Ctrl+u Отменить действия
Ctrl+x Перейти в конец следующего слова
Ctrl+y Удалить строку
Ctrl+z Перейти на начало предыдущего слова
Shift+F5 Вставка текста из внутреннего буфера обмена mc (прочитать внешний файл)
Meta+Enter Диалог перехода к определению функции
Meta+- Возврат после перехода к определению функции
Meta++ Переход вперед к определению функции
Meta+n Включение/отключение отображения номеров строк
tab Отодвигает вправо выделенный текст, если выключена опция «Постоянные блоки»
Meta-tab Отодвигает влево выделенный текст, если выключена опция «Постоянные блоки»
Shift+Стрелки Выделение текста
Meta+Стрелки Выделение вертикального блока
Meta+Shift+- Переключение режима отображения табуляций и пробелов
Meta+Shift++ Переключение режима «Автовыравнивание возвратом каретки»

Также работают и привычные по Norton и Volkov Commander’ам клавиши:

Ctrl-Ins копировать
Shift-Ins вставить
Shift-Del вырезать
Ctrl-Del удалить выделенный текст

Выделение мышью также работает на некоторых терминалах.

Клавиши автозавершения (обычно Alt-Tab или Escape Tab) завершают слово, на котором находится курсор, используя ранее применявшиеся в файле слова.

Для задания макроса нажмите Ctrl-R и нажимайте клавиши, которые нужны для воспроизведения в будущем. Повторное нажатие Ctrl-R завершит запись макроса. Затем нажмите на клавишу, на которую хотите повесить этот макрос. Макрос сохранится, когда нажмете Ctrl-A и затем назначенную макросу клавишу. Макрос выполнится по нажатию Meta, Ctrl, или Esc назначенной клавиши, если клавиша не используется другими функциями.

Дополнительную информацию, как обычно в Linux, можно получить при помощи команды man mc .

Правила оформления ассемблерных программ

При наборе программ на языке ассемблера придерживайтесь следующих правил:

  • директивы набирайте большими буквами, инструкции – малыми;
  • пишите текст широко;
  • не выходите за край экрана – его неудобно будет редактировать и печатать;
  • для отступов пользуйтесь табуляцией (клавиша TAB );
  • блоки комментариев задавайте с одинаковым отступом.

Оптимальной считается такая строка:

Количество табуляций перед комментарием определяется длиной аргументов команды и может быть от 1 до 3.

По мере знакомства с синтаксисом языка будут приводиться дополнительные правила.

NASM превращает текст программы в объектный код. Имя программы задается в командной строке. В простейшем случае это выглядит так: nasm hello.asm (расширение указывать обязательно). Текст программы из файла hello.asm преобразуется в объектный код, который запишется в файл hello.o . Т. о. имена всех файлов получаются из имени входного файла и расширения по умолчанию.

NASM всегда создает выходные файлы в текущем каталоге.

NASM не запускают без параметров, т. к. он — всего лишь транслятор, а не интегрированная среда разработки.

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

Например, для компиляции приведенного выше текста программы «Hello World» необходимо писать:

nasm -f elf hello.asm

Ключ -f указывает транслятору создавать бинарные файлы в формате ELF (если используется 64-битная версия Linux, следует вместо elf указывать elf64 для генерации 64-битного кода).

Более подробно синтаксис командной строки рассмотрен в следующих работах.

Как видно из схемы на рис. [pic:l1], чтобы получить исполняемую программу, объектный файл необходимо передать на обработку компоновщику (или, как его еще называют, линковщику):

ld -o hello hello.o

Ключ -o с последующим значением задает в данном случае имя создаваемого исполняемого файла.

Формат командной строки LD подробно рассмотрен в следующих работах, также его можно увидеть, набрав ld --help . Для получения более подробной информации см. man ld . Запустить на выполнение созданный исполняемый файл можно, набрав в командной строке:

Примечание: в данном случае исполняемый файл hello выполняется из текущего каталога (что обеспечивают символы «./» перед его именем).

Какое расширение имеет C++?

C ++ это особый язык программирования. У него есть собственное обозначение файлов. Для файлов, написанных на C++ используется обозначение cpp. В данных файлах содержится не скомпилированный код. Такой код еще не готов для использования, его нужно редактировать. Внесение правок в данный код не вызовет сбоев в работе программы. При помощи данного расширения можно узнать, в каком файле содержится код, написанный на C.

Расширение файлов и важность данного объекта в процессе программирования

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

Чтобы узнать, какой интерпретатор необходимо использовать, какой машинный код применить для воспроизведения файла, и используются расширения. Машинный код дает возможность распознать тип файла. Эту информацию ему предоставляют реквизиты файла. Так, к примеру, расширение cpp, говорит о том, что документ написан на С++. Интерпретатор после распознавания расширения сможет открыть файл, чтобы пользователь смог с ним работать.

Что собой представляет расширение файла?

Поговорим о том, что собой представляет имя файла с точки зрения компьютерных наук. С назначением расширения мы уже определились: оно служит для идентификации типа и формата файла. Расширение отделяется от имени файла при помощи символа точки. В Windows 95 имелось ограничение на число символов, используемых в расширении. Их должно было быть не больше трех. В современных системах таких ограничений нет. Более того, сегодня один файл может иметь несколько типов расширений. Они будут следовать через точку. Однако к формату cpp это не относится. Мошенники часто используются данную возможность.

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

Точность информации

В некоторых случаях в расширении бывает не точно указан тип файла. Это приводит к возникновению различных проблем при использовании программ. Так, например, знакомое многим пользователям расширение txt не предоставляет пользователю информацию о том, в какой кодировке написан файл. По этой причине при открытии текстовых документов перед пользователем иногда появляется целый массив непонятных символов. Печально видеть документ в таком состоянии, особенно если он использовался для создания программного кода. В этом случае нужно поменять кодировку файла. Для текстовых документов Word используется одно расширение, которое дает понять, работал пользователь с обычным файлом или отформатированным. Расширение не указывает, какая версия программы была использована. Данный недостаток проявляется только при попытке открыть документы, созданные в более ранних версиях программы в последних версиях.

Другие способы указания формата файла

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

Запись опубликована 09.10.2015 автором katrinas11 в рубрике Программы. Отблагодари меня, поделись ссылкой с друзьями в социальных сетях:

тип файлов

Многие пользователи компьютерных систем наверняка в той или иной степени сталкивались с понятием исполняемого файла программы. Исполняемые файлы не всегда, но довольно часто имеют расширение EXE, которое является общепринятым для операционных систем семейства Windows. Чтобы немного прояснить вопрос, связанный с расширениями, мы рассмотрим общую информацию об этих объектах, а также рассмотрим некоторые типы основных расширений.

Чем исполняемые файлы отличаются от других объектов

Прежде чем утверждать, что исполняемый файл программы может иметь расширение только одного определенного типа, необходимо разобраться в том, как отличить такой объект от других. К основным отличиям исполняемых файлов от других информационных данных можно отнести следующие факторы: само расширение, которое указывает на содержание в файле либо машинного, либо байт-кода виртуальной машины, сигнатура, атрибуты в файловой системе. Однако даже если пользователь знает, что исполняемые файлы имеют расширение имени типа EXE, то обычными средствами посмотреть содержимое не получится, поскольку такие объекты обладают компилированным содержимым, которые отображается при просмотре в виде бессмысленного набора символов. В общем случае пользователю придется использовать средства Disassembler, или что-то подобное, что позволяет выполнить декомпиляцию. Но речь пойдет не об этом.

Исполняемые файлы: структура

Что же касается построения исполняемых файлов, то они должны содержать заголовки (предполагаемое выполнение инструкций, параметры и форматы кода) и непосредственно сами инструкции (исходные, машинные или байт-коды). В некоторых случаях в структуру могут быть включены данные для отладки, описания окружения, требования к операционной системе, списки соответствующих библиотек, звук, графика, изображения, иконки ярлыков и тому подобное. Многие из вас наверняка обращали внимание на то, что в большинстве своем у каждого такого файла в операционной системе изначально имеется иконка.

Принцип работы

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

Исполняемые файлы программ: какое расширение они имеют?

Теперь перейдем к рассмотрению вопроса, связанного с расширениями. Разумеется, совершенно все типы рассмотреть не получится, это займет очень много времени. Мы отметим только наиболее распространенные и популярные варианты. Итак, расширение задается в зависимости от типа содержимого. Так, например, в операционной системе типа Windows наиболее распространенные исполняемые файлы обладают расширением EXE. Это относится ко всем программам, которые рассчитаны на работу в среде данных операционных систем. Такие объекты содержат в себе машинные коды. Файлы BIN являются очень похожими. Пакетные файлы типа CMD, BAT и COM являются еще одним типом исполняемых файлов. Первый тип в данном случае является пакетным файлом Windows. Файлы второго и третьего типа относятся к операционным системам семейства DOS. Многие из вас вероятно уже встречали файлы типа MSI иMSU. Это может быть установщик обновлений системы, или родной инсталлятор операционной системы Windows. Отдельную категорию файлов составляют макросы и скрипты. Это файлы с расширениями JSE, JS, SCR,VBE, VBS, VB. Часто также встречаются файлы JAD иJAR, которые предназначены для установки приложений в мобильные устройства или использование в среде JAVA. В своем содержании такие объекты имеют уже не машинные коды, а коды виртуальных машин.

Какое расширение имеют исполняемые файлы в различных ОС?

Если внимательно посмотреть, то можно заметить, что в некоторых ОС встречаются довольно специфичные компоненты. Так, например, в операционной системе Windows имеется специальная категория исполняемых файлов. Вообще, в любой операционной системе можно найти как стандартные, так и специальные компоненты. Однако имеются и некоторые общие форматы, например, HTA, исполняемый документ HTML. Они работают практически везде вне зависимости от используемого типа операционной системы. Что же касается других типов систем, то, например, в «маках» исполняемые файлы обладают расширением APP для программ и PKG для дистрибутивов. В операционных системах семейства Linux дело обстоит немного иначе. Проблема заключается в том, что в таких операционных системах понятие расширения вообще отсутствует. Можно распознать исполняемый файл по атрибутам, например, системный, скрытый, только для чтения и т.д. В результате проблема изменения расширения для запуска или прочтения искомого файла пропадает. Впрочем, в любой операционной системе даже на мобильных устройствах можно найти огромное число объектов данного типа. Не нужно далеко ходить. В той же операционной системе семейства Android исполняемый файл установщика имеет расширение APK. В яблочных устройствах исполняемые файлы имеют расширение IPA.

Заключение

Подведем итог нашего небольшого обзора о расширении исполняемых файлов. Упор в данном случае делался в основном на объекты, которые присутствуют в операционных системах семейства Windows. Остальные операционные системы были затронуты только вскользь для общего развития. Как уже стало ясно, разнообразие исполняемых файлов очень велико. Невозможно привести какую-то сводную таблицу с указанием совершенно всех типов расширений. Поэтому в данной статье мы ограничились только наиболее распространенными форматами

Читайте также: