2012-02-28 3 views
2

Скомпилированные языки, такие как C# и java, имеют только во времени компиляторы, которые преобразуют их (из байтового кода) в машинный код (0 и 1). Как интерпретируемый язык, такой как VBScript, преобразуется в машинный код? Это делается операционной системой?Что преобразует vbscript в машинный код?

+1

Это делается vbscript runtime (vbscript.dll), которая анализирует и интерпретирует код «на лету» во время его запуска и вызывает собственные «внутренние функции, такие как alert() (которые уже находятся на языке ассемблера). Таким образом, в основном это как компиляция, но во время запуска программы. – user1227804

+0

user1227804, мне нравится ваш ответ. Не могли бы вы разместить его в качестве ответа? – developer747

ответ

2

Они не обязательно преобразуются в машинный код (а часто и нет).

Интерпретатор для этой программы выполняет соответствующие действия в соответствии с требованиями программы.

Некоторые интерпретаторы могут генерировать машинный код (используя JIT-компиляторы), другие могут придерживаться простой интерпретации сценария.

+1

Как процессор получает инструкции? (Все работы в конечном итоге выполняются процессором) Является ли это то, что ОС интерпретирует код и отправляет соответствующие инструкции процессору? – developer747

+1

Не ОС. Например, интерпретатор (например, wscript.exe) читает исходный сценарий по строкам и вызывает функции для выполнения того, что хочет выполнить скрипт (это слишком упрощено, но это идея). Интерпретатор и функции, которые он вызывает, являются скомпилированным кодом, как и любая другая скомпилированная программа. – Mat

+0

Ahh..so интерпретатор - это тот, который генерирует машинный код. – developer747

0

Я знаю, что это старый, но учитывая, что я не могу комментировать (респ), я хочу, чтобы добавить разъясняющий ответ:

переводчик используется для истолковать сценарий (будь то VBScript, JavaScript , python или любой другой скрипт) в отдельные инструкции. Эти инструкции могут быть в виде машинного кода или промежуточного представления (которое может использовать ОС или другая программа). Некоторые интерпретаторы сделаны для чего-то более близкого к ассемблеру, и исходный код более или менее выполняется напрямую.

Большинство современных языков сценариев (например, Python, Perl, Ruby) интерпретируются как промежуточное представление, так и промежуточное представление и скомпилированный код (aka machine, aka object). Важным отличием (vs compiled languages) является то, что переводчик не принимает весь код кода и переводит его значение в машинный код, он берет каждую строку за раз и интерпретирует ее значение как автономное устройство.

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

Источник: https://en.wikipedia.org/wiki/Interpreter_(computing), опыт

0

This is the answer Я искал. Как и механизм javascript, раньше использовался движок vbscript, который превращал человекообразный код в машинный код. Этот движок vbscript аналогичен JIT-компилятору в CLR и JVM. Только то, что оно преобразуется непосредственно из считываемого человеком кода в машинный код. В отличие от C#, имеющего промежуточный байтовый код.

+0

Ссылка на wikipedia, о которой вы упоминали в своем сообщении, не имеет упоминания о скрипте vb или vb-скрипте. Я считаю, что вы хотели сослаться на [VBScript wikipedia] (https://en.wikipedia.org/wiki/VBScript) – RBT

0

Ссылаясь на этот VB Script wikipedia article,

  1. Когда VB скрипт выполняется в браузере он использует vbscript.dll интерпретировать VB скрипт.
  2. Когда файл сценария VB выполняется из командной строки или пакетного файла, тогда для интерпретации сценария VB используется cscript.exe.
  3. Когда сценарий VB используется самой операционной системой Windows для различных целей, таких как отображение сообщений об ошибках или желтых уведомлений в правом углу панели задач, тогда он интерпретируется с использованием wscript.exe, который является службой Windows.
Смежные вопросы