История изменений
Исправление 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 язык).