1

Тема: Ускорение машины

TSVM.RunThread реализован
через case по OP Codes.
Возможно ли ускорение выполнения программ?
если каждый опкод завернуть в процедуру,
сделать массив ссылок на них,
и при интепретации делать выбор по целому.

Windows 7 32-bit

Поделиться

2

Re: Ускорение машины

К сожалению нет... Это приведет к лишним вызовам и соответственно замедлению.

Поделиться

3

Re: Ускорение машины

Не знаю какой код генерирует  case конкретный компилятор.
Преполагаю типа такого:
cmp eax, OpcodeN
je doesOpcodeN
...
doesOpcodeN:
; некий код
jmp к_началу_цикла

Здесь расход тактов  cmp, je, jmp
количество сравнений cmp в худшем случае maxN, в лучшем 1.
При выполнении операций ВМ по ссылке из массива
расход тактов только на call ret
независимо от OpcodeN

Windows 7 32-bit

Поделиться

4

Re: Ускорение машины

Для case генерируется конструкция, поочередно проверяющая равенство выражения с кейсами пока не наткнется на нужное.

Поделиться

5

Re: Ускорение машины

RoPi0n пишет:

Для case генерируется конструкция, поочередно проверяющая равенство выражения с кейсами пока не наткнется на нужное.

Ну да, линейный поиск...

Windows 7 32-bit

Поделиться