Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Какие принципиальные отличия языка Ассемблера от высокоуровневых языков программирования? Что такое байткод? В чём разница между языком Ассемблера и байткодом?Содержание книги
Поиск на нашем сайте
Язык ассемблера — язык программирования "низкого уровня". В отличие от языка машинных кодов позволяет использовать более удобные для человека мнемонические (символьные) обозначения команд. При этом для перевода с языка ассемблера в понимаемый процессором машинный код требуется специальная программа, также называемая ассемблером. Ассемблер — родной язык компьютера. Можно сказать, что компьютер «думает» на ассемблере. Поэтому программы, написанные на других языках, таких как Си, нужно сначала перевести на ассемблер, чтобы компьютер их понял и смог исполнить. Когда мы говорим о компьютере, выполняющем программы, то прежде всего имеем в виду его сердце — процессор — специальную микросхему, которая исполняет команды, часто называемые инструкциями, и хранит результаты их работы в специальных регистрах. Так, например, выполнение инструкций процессора mov eax, 2 add eax, 3 приводит к тому, что в регистре еах оказывается число 5. Первая инструкция mov eax, 2 посылает в регистр еах число 2. Вторая инструкция add eax, 3, выполняемая вслед за первой, прибавляет к содержимому регистра еах число 3. Байт-код или байтко́д (англ. byte-code), иногда также используется термин псевдоко́д — машинно-независимый код низкого уровня, генерируемый транслятором и исполняемый интерпретатором. Большинство инструкций байт-кода эквивалентны одной или нескольким командам ассемблера. Трансляция в байт-код занимает промежуточное положение между компиляцией в машинный код и интерпретацией. Байт-код называется так, потому что длина каждого кода операции — один байт, но длина кода команды различна. Каждая инструкция представляет собой однобайтовый код операции от 0 до 255, за которым следуют такие параметры, как регистры или адреса памяти. Это в типичном случае, но спецификация байт-кода значительно различается в разных языках. В то же время возможно создание процессоров, для которых данный байт-код является непосредственно машинным кодом (такие процессоры существуют, например, для Java и Forth). 4. Приведите примеры форматов исполняемых файлов и кратко охарактеризуйте их. Подробно формат ELF. форматы исполняемых файлов: ·. COM. · .EXE · A.out · Executable and Linkable Format o Таблицу Program Header, описывающую ноль или более сегментов o Таблицу Section Header, описывающую ноль или более секций o Данные, упомянутые в записях названных таблиц Сегменты содержат данные, необходимые для исполнения файла, а секции содержат информацию для линковки и обработку relocation. Каждый байт в файле может относится не более чем к одной секции. · MZ (формат) · Portable Executable
5. Из каких этапов состоит создание исполняемой программы из исходного кода? Опишите их суть. Для языков C++, Java и Python перечислите этапы создания программы, которые имеют место в реальности и укажите, в какое время они происходят. Для каких сред исполнения может создаваться программа? Первый этап — который модифицирует исходный код программы перед компиляцией в соответствии с командами препроцессора, содержащимися в программе. В соответствии с этими командами выполняются простые подстановки текста. Второй — собственно компилятор, который обрабатывает исходный код и преобразует его в код на языке ассемблера. Третий этап — ассемблер, который генерирует объектный код. И, наконец, четвертый этап — компоновщик, который собирает исполняемый файл из файлов объектного кода. Исходная программа, подготовленная на СИ в виде текстового файла, проходит 3 этапа обработки: 1) препроцессорное преобразование текста; 2) компиляция; 3) компоновка (редактирование связей или сборка). Программы на Java транслируются в байт-код, выполняемый виртуальной машиной Java (JVM) — программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор. Трансляция в байтовый код увеличивает скорость выполнения и уменьшает размер Java программ. Достоинство подобного способа выполнения программ — в полной независимости байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности благодаря тому, что исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание. Часто к недостаткам концепции виртуальной машины относят то, что исполнение байт-кода виртуальной машиной может снижать производительность программ и алгоритмов, реализованных на языке Java. Данное утверждение было справедливо для первых версий виртуальной машины Java, однако в последнее время оно практически потеряло актуальность. Этому способствовал ряд усовершенствований: § применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде, § широкое использование платформенно-ориентированного кода (native-код) в стандартных библиотеках, § аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами фирмы ARM).
|
||||
Последнее изменение этой страницы: 2016-08-16; просмотров: 1830; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.98.153 (0.011 с.) |