Версия:

Модуль jit
Модуль jit

Модуль jit

Модуль jit

Общие сведения

В модуле jit есть функции для отслеживания работы Just-In-Time компилятора LuaJIT, которые показывают вывод байт-кода или языка ассемблера, который генерирует компилятор, и в целом обеспечивают информацию о том, что LuaJIT делает с кодом на Lua.

Указатель

Ниже приведен перечень всех функций модуля jit.

Имя Назначение
jit.bc.dump() Вывод байт-кода функции
jit.dis_x86.disass() Вывод кода на языке ассемблере i386 из строки байтов
jit.dis_x64.disass() Вывод кода на языке ассемблере x86-64 из строки байтов
jit.dump.on(), jit.dump.off() Вывод промежуточного или машинного кода из следующего кода на Lua
jit.v.on(), jit.v.off() Вывод трассировки компиляции LuaJIT и интерпретируемого кода
jit.bc.dump(function)

Выводит байт-код функции.

Пример:

function f()
  print("D")
end
jit.bc.dump(f)

Перечень доступных параметров см. в исходном коде bc.lua.

jit.dis_x86.disass(string)

Выводит код на языке ассемблера i386 из строки байтов.

Пример:

-- Дизассемблировать в шестнадцатеричной системе 97, что представляет собой код в x86 для xchg eax, edi
jit.dis_x86.disass('\x97')

Перечень доступных параметров см. в исходном коде dis_x86.lua.

jit.dis_x64.disass(string)

Выводит код на языке ассемблера x86-64 из строки байтов.

Пример:

-- Дизассемблировать в шестнадцатеричной системе 97, что представляет собой код в x86-64 для xchg eax, edi
jit.dis_x64.disass('\x97')

Перечень доступных параметров см. в исходном коде dis_x64.lua.

jit.dump.on(option[, output file])
jit.dump.off()

Выводит промежуточный или машинный код из следующего кода на Lua.

Пример:

-- Показать машинный код цикла "for" на Lua
jit.dump.on('m')
local x = 0;
for i = 1, 1e6 do
  x = x + i
end
print(x)
jit.dump.off()

Перечень доступных параметров см. в исходном коде dump.lua.

jit.v.on(option[, output file])
jit.v.off()

Выводит трассировку компиляции LuaJIT и интерпретируемого кода

Пример:

-- Показать, что делает LuaJIT для цикла "for" на Lua
jit.v.on()
local x = 0
for i = 1, 1e6 do
    x = x + i
end
print(x)
jit.v.off()

Перечень доступных параметров см. в исходном коде v.lua.