<<
>>

Глава 7Уровень ассемблера

В главах 4, 5 и 6 мы обсуждали три уровня, которые можно встретить в архитектуре большинства современных компьютеров. В этой главе речь пойдет о еще одном уровне, который также присутствует в архитектуре практически всех современных машин.
Это — уровень ассемблера. Этот уровень существенно отличается от трех предыдущих, поскольку он реализуется путем трансляции, а не интерпретации.

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

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

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

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

1.

Создание эквивалентной программы на выходном языке.

2. Выполнение полученной программы.

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

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

<< | >>
Источник: Таненбаум Э.. Архитектура компьютера. 5-е изд. 2007

Еще по теме Глава 7Уровень ассемблера:

  1. Глава 8. Глава государства в зарубежных странах
  2. Глава рода
  3. Глава рода
  4. Глава 1
  5. Глава 2
  6. Глава 3
  7. Глава 4
  8. Глава 5
  9. Глава 6
  10. ГЛАВА 1.
  11. ГЛАВА 2.
  12. ГЛАВА 3.