Как называется программа перевода с языка высокого уровня в машинные коды

Интерпретатор переводит Вашу программу с языка высокого уровня (например, БЕЙСИКа) в машинный код последовательно строку за строкой. Он работает примерно так: прочитал строку, проверил, нет ли в ней ошибок, перевел ее в машинный код, выполнил команды машинного кода, запомнил, где нужно результат и перешел к следующей строке. Чтобы сделать, например, операцию

интерпретатор обращается к процессору несколько сот раз. Вам этого не видно, все равно результат появится на экране через доли секунды, но это так.

Если же Вам позже придется вернуться к этой строке (например, с помощью GO TO 10), то все эти действия будут повторены.

А ведь многие операции выполняются в циклах.

Таким образом, интерпретатор работает крайне медленно. Зато имеется возможность работы в диалоговом режиме. Так, на Бейсике, когда Вы набираете программу, каждая строка сразу же и проверяется на правильность синтаксиса и, если Вы сделаете ошибку, то строка не будет введена в программу нажатием клавиши ENTER до тех пор, пока Вы эту ошибку не устраните.

Классификация языков программирования по поколениям и уровням. Что такое машинный код и ассемблер

Вы всегда можете прервать работу программы, внести изменения и стартовать опять, причем с той строки, с какой хотите. Работать с интерпретатором БЕЙСИКа настолько удобно для начинающих, что на многих моделях персональных ЭВМ, в том числе и на «ZX-Spectrum`е», он уже «зашит» в постоянное запоминающее устройство (ПЗУ) и служит не только языком программирования, но и выполняет функции операционной системы компьютера. При включении компьютера в сеть он сразу готов к выполнению команд БЕЙСИКа.

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

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

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

Итак, программирование в машинном коде (на Ассемблере) позволяет повысить скорость работы программы по сравнению с работой через интерпретатор в 50…200 раз и в 1,5…3 раза по сравнению с кодом, прошедшим компиляцию. Это бывает чрезвычайно важно, если в программе есть многочисленные вложенные друг в друга циклы, если многократно выполняются поиск и выбор данных из обширных областей памяти. Много времени занимают операции, связанные с обработкой графических изображений на экране. Эффект плавного и быстрого перемещения (и изменения формы) объектов в компьютерных видеоиграх практически всегда создается программированием в машинном коде.

#1. Этапы трансляции программы в машинный код. Стандарты | Язык C для начинающих

Сравним расход памяти при работе на БЕЙСИКе и в машинных кодах. Программа на БЕЙСИКе размером в 30 строк занимает примерно 1К памяти.

Аналогичная ей, выполняющая те же задачи, программа в машинных кодах будет иметь примерно 150 строк (команд), но занимают они всего 200…250 байтов оперативной памяти.

В нашей стране есть еще две объективные причины, вызывающие повышенный интерес к программированию в машинных кодах.

Видео: Пишу программу в машинных кодах Скачать

Пишу программу в машинных кодах

Видео: ЯЗЫК АССЕМБЛЕРА за 3 МИНУТЫ Скачать

Читайте также:
Как пользоваться программой строкой

ЯЗЫК АССЕМБЛЕРА за 3 МИНУТЫ

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

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

В конце 80-х годов в Душанбе на базе этого компьютера была сделана система голосования республиканского парламента. Работают под управлением «Спектрума» и очень интересные системы управления сельскохозяйственными предприятиями (фермами и птицефермами). Интересны автоматизированные системы диагностирования автомобиля, системы контроля состояния спортсменов и многое другое. Поскольку процедуры, управляющие работой всех этих устройств (их называют драйверами), обычно пишутся в машинных кодах, то их надо знать и уметь с ними работать.

Другая особенность состоит в том, что основная масса программ для Синклер-компьютеров написана в Англии на английском языке. Желание адаптировать эти программы на русский язык во многих случаях упирается в необходимость понимания структуры программы, а большинство лучших программ написано именно в машинных кодах.

«ИНФОРКОМ» получает множество писем с вопросами по поводу переделки системы загрузки фирменных программ. Мы так понимаем, что многие уже обзавелись дисководом с Бета-диск интерфейсом, и теперь перед ними стоит задача переписывания программ на диск.

При этом пользоваться «магической кнопкой» они не хотят, т.к. при этом любая, даже самая короткая программа будет занимать на диске 48К, а хотят ее переписать на диск блок за блоком и сопроводить загрузчиком с диска. На все эти вопросы ответ может быть только один.

Поскольку разные фирмы в своих программах применяют разные системы загрузки, универсального решения здесь не существует. К каждой программе нужен индивидуальный подход. Надо прочитать загрузчик программы, понять куда какой блок загружается и в каком порядке они стартуют, а затем, если надо, внести в него свои изменения. Поскольку лучшие программы имеют при себе загрузчик в машинных кодах (обычно он следует после БЕЙСИК-загрузчика или организован внутри него в строке после оператора REM), то умение работать с машинным кодом Вам пригодится и здесь. Вот в основном те причины, которые могут побудить Вас к освоению программирования в машинных кодах или хотя бы их пониманию (что достигается гораздо быстрее, чем способность активного программирования, но имеет не меньше значения), хотя хотелось бы отметить еще два важных, на наш взгляд, обстоятельства.

Во-первых, «Спектрум» имеет ПЗУ объемом 16К. Эта память буквально насыщена множеством очень полезных системных процедур. Все они записаны в машинных кодах. Их можно смело применять в собственных программах, обращаясь к ним по мере необходимости. Это дает колоссальный выигрыш в расходе памяти и вообще очень упрощает программирование.

Поскольку все содержимое ПЗУ записано в машинном коде, умение разбираться в нем является необходимым. Для использования системных программ, содержащихся в ПЗУ, Вам необходимо ознакомиться с основами программирования в машинных кодах.

Что же касается особой трудоемкости работ по программированию в машинных кодах, то и здесь есть ряд возражений.

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

· Существуют ассемблирующие программы, которые имеют достаточный набор средств, чтобы освободить Вас от самой рутинной работы и снизить трудоемкость программирования.

· Как правило, нет никакой необходимости всю программу писать в машинных кодах. Всегда в ней можно выделить блок, который решающим образом влияет на быстродействие. Он может быть очень маленьким по размеру. Вот его-то и надо записать в машинных кодах, а остальную часть программы оставить, например, на БЕЙСИКе.

Если Вы создаете программу «русско-английский словарь», то она вполне может быть написана на БЕЙСИКе и только процедура поиска перевода слова, занимающая много времени, должна быть записана в машинных кодах. Если же Вы создаете русско-китайский словарь, то еще одним узким местом станет рисование на экране иероглифов. Вам придется записать несколько процедур, которые смогут делать это быстро. Диалог с пользователем программа может вести и из БЕЙСИКа.

Читайте также:
Расшифровка программ посудомоечной машины электролюкс

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

Конечно, если Вы делаете только первые шаги в машинных кодах, то у Вас нет еще такой библиотеки, но прочитав эту книгу, Вы уже можете покопаться в машинном коде некрупных фирменных программ. Там Вы найдете множество открытий. В этом Вам очень поможет какая-либо дисассемблирующая программа, например MONITOR 16/48. Для Вас открыты и другие книги «ИНФОРКОМа» и, самое главное, наши выпуски «ZX-РЕВЮ».

Основы программирования на машинном языке

Одной из характеристик устройства вычислительной техники является набор команд(инструкций), которыми может оперировать данной устройство. Этот набор получил название система команд. Одной из важнейших характеристик системы команд является ее разрядность. В настоящее время используют без разрядные, одноразрядные, двухразрядные, трехразрядные команды и команды с переменной разрядностью. Структура команд различной разрядности приведена на рисунке 31.

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

Видео: Hello World на Ассемблере (x86) Скачать

Источник: altarena.ru

Программа перевода исходного кода компьютерной программы в объектный машинный код

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

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

Шопенгауэр предпочитает буддизм христианству, и известный компилятор Бюхнер поддерживает его в этом.

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

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

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

Источник: библиотека Максима Мошкова

Источник: xn--b1algemdcsb.xn--p1ai

Машинный язык и ассемблер

На своем рабочем уровне микропроцессор реагирует на список операций, называемый машинной программой. На рис. 7.1, а приведено содержимое памяти, являющееся программой на машинном языке. Эта программа начинается с адреса 2000Н с содержимым КОП 0011 11102 и оканчивается адресом 2006Н с содержимым 0111 01102. Человеку практически невозможно понять программу, представленную в такой форме.

Рис. 7.1. Программы:

a —в двоичном машинном коде; б — в шестнадцатеричном машинном коде

Программа на машинном языке на рис. 7.1, а становится несколько проще для восприятия, когда она представлена в шестнадцатеричном коде (Н-коде), как показано на рис. 7.1,6. Однако, хотя двоичные данные приведены в шестнадцатеричном коде, эта часть программы всегда рассматривается как заданная на машинном языке и оказывается трудной для понимания.

В более приемлемой форме записанная на машинном языке она могла бы выглядеть так:

1. Загрузить двоичное число (1011 0100) в аккумулятор.

2. Инвертировать каждый двоичный бит содержимого аккумулятора.

3. Поместить результаты инверсии в ячейку памяти данных 2100Н.

В этой части осуществляется перевод двоичного 8-разрядного числа в его эквивалент в инверсной форме.

Рис. 7.2. Трансляция мнемоники ассемблера в машинный код программы

Возникает вопрос: как перейти от этой формы человеческого языка, иногда длинной и сложной, к машинному языку? Ответ состоит в использовании языка простого программирования — от самого высокого уровня до машинного, представленного на рис. 7.1.

Читайте также:
Что такое программа оздоровления

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

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

Суть и процедура ассемблирования показаны на рис. 7.2, где, например, вторая команда программы представлена единственной мнемоникой из трех букв СМА (инвертировать содержимое аккумулятора — СМА от Complement Accumulator (англ.) — дополнить аккумулятор. Имеется в виду дополнение до 1, т. е. инвертирование или формирование обратного кода числа, содержащегося в аккумуляторе.).

Сначала три буквы переведены в их эквивалент в коде ASCII, затем три кода ASCII преобразованы в определенный порядок специальной программой ассемблера, которая выдает код инверсии содержимого аккумулятора на машинном языке, т.е. 0010 11112 в данном случае или 2FH. Мнемоника преобразована в один единственный байт машинного языка.

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

Обычным является деление объявлений на машинном языке на четыре поля: метка; мнемоника; операнд и комментарий.

Таблица 7.1. Программа на языке ассемблер

Метка Мнемоника Операнд Комментарий
MVI СМА STA HLT А, В4Н 2100Н Загрузить в аккумулятор данные, следующие непосредственно: В4Н Инвертировать содержимое аккумулятора Разместить содержимое аккумулятора Остановить МП

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

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

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

Как только программа составлена (см. табл. 7.1), она представляется затем в виде табл. 7.2. Таким образом, задача ассемблирования (или составление программы на ассемблере) состоит из этапов: 1) перевод мнемоники и операндов на машинный язык;

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

Таблица 7.2. Программа в машинных кодах и на языке ассемблер

Адрес, Н-код Содержимое, Н-код Метка Мнемоника Операнд Комментарий
2004 2005 2006 ЗЕ В4 2F MV1 CMA STA HLT А, В4Н 21 ООН Загрузить аккумулятор данными, следующими непосредственно за КОП, В4Н Инвертировать содержимое аккумулятора Поместить содержимое аккумулятора в ячейку памяти 2100Н Остановить МП

Программа, состоящая из символических команд (фрагмент показан в табл. 7.1), иногда называется исходной программой, а переведенная однажды на машинный язык — уже объектной программой.

Программирование на языке ассемблер является способом «очеловечивания» действий микропроцессора. Языки высокого уровня (C, С+ и т. д.) при их использовании делают программирование более удобным.

Например, одна команда на C или С+ может соответствовать 20 или 30 машинным командам. Название этой главы относится к программированию микропроцессора (в противоположность программированию микро-ЭВМ), потому что везде мы будем использовать его состав команд. Будет использовано программирование на языке ассемблер, помогающее пониманию состава команд микропроцессора и его действий.

Упражнения

7.1. Два сегмента программы, приведенные на рис. 7.1, написаны на (ассемблере, машинном языке).

7.2. Для формулировки команды микропроцессору язык (машинный, ассемблер) использует слова и фразы.

7.3. _________ (Ассемблер, Монитор) является специальной программой ЭВМ, позволяющей перевести программу пользователя на машинный язык.

7.4. Перечислить четыре поля программ на языке ассемблер.

7.5. Составленная на языке ассемблер программа будет содержать адреса ячеек памяти и (машинные, С) коды для каждой команды на языке ассемблер.

7.6. Программа, составленная из символических команд, называется (объектной, исходной).

Решения

7.1. Машинном языке. 7.2. Ассемблер. 7.3. Ассемблер. 7.4. См. обозначения в табл. 7.1, а именно четыре поля: метка, мнемоника, операнд и комментарий. 7.5.

Машинные. 7.6. Исходной.

Источник: poznayka.org

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru