LINUX.ORG.RU

История изменений

Исправление quasimoto, (текущая версия) :

что такое «просто выполнение x86 кода»?

http://static.usenix.org/event/usenix05/tech/freenix/full_papers/bellard/bell...

The dynamic translator performs a runtime conversion of the target CPU instructions into the host instruction set. The resulting binary code is stored in a translation cache so that it can be reused. The advantage compared to an interpreter is that the target instructions are fetched and decoded only once.

http://bellard.org/jslinux/tech.html

Some of the code is inspired from my x86 dynamic translator present in QEMU, but there are important differences because here it is an interpreter.

В чистом интерпретирующем эмуляторе машинный код можно декодировать и выполнять просто на софтовом уровне (иначе — JITировать в местный машинный код который можно вызвать на выполнение).

Иначе «x86» это часть ISA выполнением которой занимается микроархитектура CPU.

И чем оно отличается от «просто выполнения C/PHP/Java/Python/BrainFuck/etc кода»?

Если ты их компилируешь в машинный код, то смотри выше, если в байткод — выполняет VM (как-то написанная и сама выполняемая), иначе, если совсем тупо, то обычный интерпретатор выполняет (тоже — как-то написанный и работающий, он тоже программа, так что к нему относятся те же вопросы, что ты задаёшь про target язык).

Исходная версия quasimoto, :

что такое «просто выполнение x86 кода»?

http://static.usenix.org/event/usenix05/tech/freenix/full_papers/bellard/bell...

The dynamic translator performs a runtime conversion of the target CPU instructions into the host instruction set. The resulting binary code is stored in a translation cache so that it can be reused. The advantage compared to an interpreter is that the target instructions are fetched and decoded only once.

http://bellard.org/jslinux/tech.html

Some of the code is inspired from my x86 dynamic translator present in QEMU, but there are important differences because here it is an interpreter.

В чистом интерпретирующем эмуляторе машинный код можно декодировать и выполнять просто на софтовом уровне.

Иначе «x86» это часть ISA выполнением которой занимается микроархитектура CPU.

И чем оно отличается от «просто выполнения C/PHP/Java/Python/BrainFuck/etc кода»?

Если ты их компилируешь в машинный код, то смотри выше, если в байткод — выполняет VM (как-то написанная и сама выполняемая), иначе, если совсем тупо, то обычный интерпретатор выполняет (тоже — как-то написанный и работающий, он тоже программа, так что к нему относятся те же вопросы, что ты задаёшь про target язык).