Интерпретация и ассемблер

👁 131 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

С интерпретацией ЦПУ, в первую очередь, транслирует человеко-читабельный код в бинарные слова, чтобы ЦПУ смог их выполнить. Интерпретатор должен:

  • первым делом читает текстовый поток «A = A + B» (девятый символ у каждого байта);
  • пропустить 4 пробела из текста;
  • находить переменные A и B (находящиеся в регистрах или в SRAM, точность/длина, и т.д.);
  • идентифицировать символ «+», как оператор сложения;
  • подготовить машинно-ориентированную последовательность, которая эквивалентна в текстовой форме на ассемблере.

В последствии, будет вероятный простой машинный код, похожий на «ADD R0, R1» (в ассемблере). Но, скорее всего, конечный машинный код будет несколько длиннее, чем ассемблерный, так как помимо одной операции сложения процессору еще нужно читать, записать переменные из/в SRAM, сложить 8-битные целые числа, сохранить/перезаписать регистры в стек и т.д.
Различие между интерпретацией и ассемблированием кода в том, что после интерпретации ЦПУ получает привилегированную «еду», полностью выполняемые слова. При интерпретации процессор, в течение большей части времени, выполняет задачу трансляции. Трансляция требует, примерно, 20 или 200 шагов ЦПУ, перед три или четыре словами может быть выполнен. Скорость выполнения высокая обычно некритична для общей работы процессора. Если требуется большая скорость выполнения, то не проблема это решить, поставив генератор тактовой частоты большего значения. Низкая скорость неуместна во время критических ситуаций, где требуется быстрая реакция на события. Никто не знает, что процессор точно будет делать и как долго это продолжиться.