Inline-Lua
view release on metacpan or search on metacpan
ffi/target/release/build/mlua-sys-6a99a2ae50f12319/out/luajit-build/build/src/jit/dis_arm64.lua view on Meta::CPAN
----------------------------------------------------------------------------
-- LuaJIT ARM64 disassembler module.
--
-- Copyright (C) 2005-2025 Mike Pall. All rights reserved.
-- Released under the MIT license. See Copyright Notice in luajit.h
--
-- Contributed by Djordje Kovacevic and Stefan Pejic from RT-RK.com.
-- Sponsored by Cisco Systems, Inc.
----------------------------------------------------------------------------
-- This is a helper module used by the LuaJIT machine code dumper module.
--
-- It disassembles most user-mode AArch64 instructions.
-- NYI: Advanced SIMD and VFP instructions.
------------------------------------------------------------------------------
local type = type
local sub, byte, format = string.sub, string.byte, string.format
local match, gmatch, gsub = string.match, string.gmatch, string.gsub
local concat = table.concat
local bit = require("bit")
local band, bor, bxor, tohex = bit.band, bit.bor, bit.bxor, bit.tohex
local lshift, rshift, arshift = bit.lshift, bit.rshift, bit.arshift
local ror = bit.ror
------------------------------------------------------------------------------
-- Opcode maps
------------------------------------------------------------------------------
local map_adr = { -- PC-relative addressing.
shift = 31, mask = 1,
[0] = "adrDBx", "adrpDBx"
}
local map_addsubi = { -- Add/subtract immediate.
shift = 29, mask = 3,
[0] = "add|movDNIg", "adds|cmnD0NIg", "subDNIg", "subs|cmpD0NIg",
}
local map_logi = { -- Logical immediate.
shift = 31, mask = 1,
[0] = {
shift = 22, mask = 1,
[0] = {
shift = 29, mask = 3,
[0] = "andDNig", "orr|movDN0ig", "eorDNig", "ands|tstD0Nig"
},
false -- unallocated
},
{
shift = 29, mask = 3,
[0] = "andDNig", "orr|movDN0ig", "eorDNig", "ands|tstD0Nig"
}
}
local map_movwi = { -- Move wide immediate.
shift = 31, mask = 1,
[0] = {
shift = 22, mask = 1,
[0] = {
shift = 29, mask = 3,
[0] = "movnDWRg", false, "movz|movDYRg", "movkDWRg"
}, false -- unallocated
},
{
shift = 29, mask = 3,
[0] = "movnDWRg", false, "movz|movDYRg", "movkDWRg"
},
}
local map_bitf = { -- Bitfield.
shift = 31, mask = 1,
[0] = {
shift = 22, mask = 1,
[0] = {
shift = 29, mask = 3,
[0] = "sbfm|sbfiz|sbfx|asr|sxtw|sxth|sxtbDN12w",
"bfm|bfi|bfxilDN13w",
"ubfm|ubfiz|ubfx|lsr|lsl|uxth|uxtbDN12w"
}
},
( run in 3.372 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )