亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dasm_x86.lua

?? lua的即時編譯器。支持lua 5.1.2版本
?? LUA
?? 第 1 頁 / 共 4 頁
字號:
-------------------------------------------------------------------------------- DynASM x86 module.---- Copyright (C) 2005-2007 Mike Pall. All rights reserved.-- See dynasm.lua for full copyright notice.-------------------------------------------------------------------------------- Module information:local _info = {  arch =	"x86",  description =	"DynASM x86 (i386) module",  version =	"1.1.3",  vernum =	 10103,  release =	"2007-05-24",  author =	"Mike Pall",  license =	"MIT",}-- Exported glue functions for the arch-specific module.local _M = { _info = _info }-- Cache library functions.local type, tonumber, pairs, ipairs = type, tonumber, pairs, ipairslocal assert, unpack = assert, unpacklocal _s = stringlocal sub, format, byte, char = _s.sub, _s.format, _s.byte, _s.charlocal find, match, gmatch, gsub = _s.find, _s.match, _s.gmatch, _s.gsublocal concat, sort = table.concat, table.sortlocal char, unpack = string.char, unpack-- Inherited tables and callbacks.local g_opt, g_archlocal wline, werror, wfatal, wwarn-- Action name list.-- CHECK: Keep this in sync with the C code!local action_names = {  -- int arg, 1 buffer pos:  "DISP",  "IMM_S", "IMM_B", "IMM_W", "IMM_D",  "IMM_WB", "IMM_DB",  -- action arg (1 byte), int arg, 1 buffer pos (num):  "SPACE",  -- ptrdiff_t arg, 1 buffer pos (address): !x64  "SETLABEL", "REL_A",  -- action arg (1 byte) or int arg, 2 buffer pos (link, offset):  "REL_LG", "REL_PC",  -- action arg (1 byte) or int arg, 1 buffer pos (link):  "IMM_LG", "IMM_PC",  -- action arg (1 byte) or int arg, 1 buffer pos (offset):  "LABEL_LG", "LABEL_PC",  -- action arg (1 byte), 1 buffer pos (offset):  "ALIGN",  -- action arg (1 byte), no buffer pos.  "ESC",  -- no action arg, no buffer pos.  "MARK",  -- action arg (1 byte), no buffer pos, terminal action:  "SECTION",  -- no args, no buffer pos, terminal action:  "STOP"}-- Maximum number of section buffer positions for dasm_put().-- CHECK: Keep this in sync with the C code!local maxsecpos = 25 -- Keep this low, to avoid excessively long C lines.-- Action name -> action number (dynamically generated below).local map_action = {}-- First action number. Everything below does not need to be escaped.local actfirst = 256-#action_names-- Action list buffer and string (only used to remove dupes).local actlist = {}local actstr = ""-- Argument list for next dasm_put(). Start with offset 0 into action list.local actargs = { 0 }-- Current number of section buffer positions for dasm_put().local secpos = 1-------------------------------------------------------------------------------- Compute action numbers for action names.for n,name in ipairs(action_names) do  local num = actfirst + n - 1  map_action[name] = numend-- Dump action names and numbers.local function dumpactions(out)  out:write("DynASM encoding engine action codes:\n")  for n,name in ipairs(action_names) do    local num = map_action[name]    out:write(format("  %-10s %02X  %d\n", name, num, num))  end  out:write("\n")end-- Write action list buffer as a huge static C array.local function writeactions(out, name)  local nn = #actlist  local last = actlist[nn] or 255  actlist[nn] = nil -- Remove last byte.  if nn == 0 then nn = 1 end  out:write("static const unsigned char ", name, "[", nn, "] = {\n")  local s = "  "  for n,b in ipairs(actlist) do    s = s..b..","    if #s >= 75 then      assert(out:write(s, "\n"))      s = "  "    end  end  out:write(s, last, "\n};\n\n") -- Add last byte back.end-------------------------------------------------------------------------------- Add byte to action list.local function wputxb(n)  assert(n >= 0 and n <= 255 and n % 1 == 0, "byte out of range")  actlist[#actlist+1] = nend-- Add action to list with optional arg. Advance buffer pos, too.local function waction(action, a, num)  wputxb(assert(map_action[action], "bad action name `"..action.."'"))  if a then actargs[#actargs+1] = a end  if a or num then secpos = secpos + (num or 1) endend-- Add call to embedded DynASM C code.local function wcall(func, args)  wline(format("dasm_%s(Dst, %s);", func, concat(args, ", ")), true)end-- Delete duplicate action list chunks. A tad slow, but so what.local function dedupechunk(offset)  local al, as = actlist, actstr  local chunk = char(unpack(al, offset+1, #al))  local orig = find(as, chunk, 1, true)  if orig then    actargs[1] = orig-1 -- Replace with original offset.    for i=offset+1,#al do al[i] = nil end -- Kill dupe.  else    actstr = as..chunk  endend-- Flush action list (intervening C code or buffer pos overflow).local function wflush(term)  local offset = actargs[1]  if #actlist == offset then return end -- Nothing to flush.  if not term then waction("STOP") end -- Terminate action list.  dedupechunk(offset)  wcall("put", actargs) -- Add call to dasm_put().  actargs = { #actlist } -- Actionlist offset is 1st arg to next dasm_put().  secpos = 1 -- The actionlist offset occupies a buffer position, too.end-- Put escaped byte.local function wputb(n)  if n >= actfirst then waction("ESC") end -- Need to escape byte.  wputxb(n)end-------------------------------------------------------------------------------- Global label name -> global label number. With auto assignment on 1st use.local next_global = 10local map_global = setmetatable({}, { __index = function(t, name)  if not match(name, "^[%a_][%w_]*$") then werror("bad global label") end  local n = next_global  if n > 246 then werror("too many global labels") end  next_global = n + 1  t[name] = n  return nend})-- Dump global labels.local function dumpglobals(out, lvl)  local t = {}  for name, n in pairs(map_global) do t[n] = name end  out:write("Global labels:\n")  for i=10,next_global-1 do    out:write(format("  %s\n", t[i]))  end  out:write("\n")end-- Write global label enum.local function writeglobals(out, prefix)  local t = {}  for name, n in pairs(map_global) do t[n] = name end  out:write("enum {\n")  for i=10,next_global-1 do    out:write("  ", prefix, t[i], ",\n")  end  out:write("  ", prefix, "_MAX\n};\n")end-------------------------------------------------------------------------------- Arch-specific maps.local map_archdef = {}		-- Ext. register name -> int. name.local map_reg_rev = {}		-- Int. register name -> ext. name.local map_reg_num = {}		-- Int. register name -> register number.local map_reg_opsize = {}	-- Int. register name -> operand size.local map_reg_valid_base = {}	-- Int. register name -> valid base register?local map_reg_valid_index = {}	-- Int. register name -> valid index register?local reg_list = {}		-- Canonical list of int. register names.local map_type = {}		-- Type name -> { ctype, reg }local ctypenum = 0		-- Type number (for _PTx macros).local addrsize = "d"		-- Size for address operands. !x64-- Helper function to fill register maps.local function mkrmap(sz, names)  for n,name in ipairs(names) do    local iname = format("@%s%x", sz, n-1)    reg_list[#reg_list+1] = iname    map_archdef[name] = iname    map_reg_rev[iname] = name    map_reg_num[iname] = n-1    map_reg_opsize[iname] = sz    if sz == addrsize then      map_reg_valid_base[iname] = true      map_reg_valid_index[iname] = true    end  end  reg_list[#reg_list+1] = ""end-- Integer registers (dword, word and byte sized).mkrmap("d", {"eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi"})map_reg_valid_index[map_archdef.esp] = nilmkrmap("w", {"ax", "cx", "dx", "bx", "sp", "bp", "si", "di"})mkrmap("b", {"al", "cl", "dl", "bl", "ah", "ch", "dh", "bh"})-- FP registers (internally tword sized, but use "f" as operand size).mkrmap("f", {"st0", "st1", "st2", "st3", "st4", "st5", "st6", "st7"})-- SSE registers (oword sized, but qword and dword accessible).mkrmap("o", {"xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7"})-- Operand size prefixes to codes.local map_opsize = {  byte = "b", word = "w", dword = "d", qword = "q", oword = "o", tword = "t",  aword = addrsize,}-- Operand size code to number.local map_opsizenum = {  b = 1, w = 2, d = 4, q = 8, o = 16, t = 10,}-- Operand size code to name.local map_opsizename = {  b = "byte", w = "word", d = "dword", q = "qword", o = "oword", t = "tword",  f = "fpword",}-- Valid index register scale factors.local map_xsc = {  ["1"] = 0, ["2"] = 1, ["4"] = 2, ["8"] = 3,}-- Condition codes.local map_cc = {  o = 0, no = 1, b = 2, nb = 3, e = 4, ne = 5, be = 6, nbe = 7,  s = 8, ns = 9, p = 10, np = 11, l = 12, nl = 13, le = 14, nle = 15,  c = 2, nae = 2, nc = 3, ae = 3, z = 4, nz = 5, na = 6, a = 7,  nge = 12, ge = 13, ng = 14, g = 15,}-- Reverse defines for registers.function _M.revdef(s)  return gsub(s, "@%w+", map_reg_rev)end-- Dump register names and numberslocal function dumpregs(out)  out:write("Register names, sizes and internal numbers:\n")  for _,reg in ipairs(reg_list) do    if reg == "" then      out:write("\n")    else      local name = map_reg_rev[reg]      local num = map_reg_num[reg]      local opsize = map_opsizename[map_reg_opsize[reg]]      out:write(format("  %-5s %-8s %d\n", name, opsize, num))    end  endend-------------------------------------------------------------------------------- Put action for label arg (IMM_LG, IMM_PC, REL_LG, REL_PC).local function wputlabel(aprefix, imm, num)  if type(imm) == "number" then    waction(aprefix.."LG", nil, num);    wputxb(imm)  else    waction(aprefix.."PC", imm, num)  endend-- Put signed byte or arg.local function wputsbarg(n)  if type(n) == "number" then    if n < -128 or n > 127 then      werror("signed immediate byte out of range")    end    if n < 0 then n = n + 256 end    wputb(n)  else waction("IMM_S", n) endend-- Put unsigned byte or arg.local function wputbarg(n)  if type(n) == "number" then    if n < 0 or n > 255 then      werror("unsigned immediate byte out of range")    end    wputb(n)  else waction("IMM_B", n) endend-- Put unsigned word or arg.local function wputwarg(n)  if type(n) == "number" then    if n < 0 or n > 65535 then      werror("unsigned immediate word out of range")    end    local r = n%256; n = (n-r)/256; wputb(r); wputb(n);  else waction("IMM_W", n) endend-- Put signed or unsigned dword or arg.local function wputdarg(n)  local tn = type(n)  if tn == "number" then    if n < 0 then n = n + 4294967296 end    local r = n%256; n = (n-r)/256; wputb(r);    r = n%256; n = (n-r)/256; wputb(r);    r = n%256; n = (n-r)/256; wputb(r); wputb(n);  elseif tn == "table" then    wputlabel("IMM_", n[1], 1)  else    waction("IMM_D", n)  endend-- Put operand-size dependent number or arg (defaults to dword).local function wputszarg(sz, n)  if not sz or sz == "d" then wputdarg(n)  elseif sz == "w" then wputwarg(n)  elseif sz == "b" then wputbarg(n)  elseif sz == "s" then wputsbarg(n)  else werror("bad operand size") endend-- Put multi-byte opcode with operand-size dependent modifications.local function wputop(sz, op)  local r  if sz == "w" then wputb(102) end  if op >= 16777216 then r = op % 16777216 wputb((op-r) / 16777216) op = r end  if op >= 65536 then r = op % 65536 wputb((op-r) / 65536) op = r end  if op >= 256 then r = op % 256 wputb((op-r) / 256) op = r end  if sz == "b" then op = op - 1 end  wputb(op)end-- Put ModRM or SIB formatted byte.local function wputmodrm(m, s, rm)  assert(m < 4 and s < 8 and rm < 8, "bad modrm operands")  wputb(64*m + 8*s + rm)end-- Put ModRM/SIB plus optional displacement.local function wputmrmsib(t, s, imark)  -- Register mode.  if sub(t.mode, 1, 1) == "r" then    wputmodrm(3, s, t.reg)    return  end  local disp = t.disp  local tdisp = type(disp)  -- No base register?  if not t.reg then    if t.xreg then      -- Indexed mode with index register only.      wputmodrm(0, s, 4) -- [xreg*xsc+disp] -> (0, s, esp) (xsc, xreg, ebp)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美高清在线一区二区| 在线不卡中文字幕播放| 中文字幕av在线一区二区三区| 国产不卡在线视频| 亚洲欧洲精品成人久久奇米网| 91浏览器在线视频| 亚洲成人激情综合网| 精品久久久久久无| a4yy欧美一区二区三区| 亚洲一卡二卡三卡四卡五卡| 日韩三级免费观看| 国产91丝袜在线播放0| 亚洲一区二区三区四区在线观看| 欧美一区二区播放| www..com久久爱| 五月天一区二区三区| 精品免费视频一区二区| 91小视频在线| 另类欧美日韩国产在线| 国产精品免费久久久久| 欧美人伦禁忌dvd放荡欲情| 国产真实乱偷精品视频免| 亚洲欧美日韩国产另类专区 | 亚洲午夜精品在线| 日韩视频一区二区三区在线播放 | 欧美男生操女生| 国产精品综合二区| 亚洲成人av电影在线| 国产免费成人在线视频| 欧美人妖巨大在线| 99久久精品免费看国产| 久久精品国产亚洲高清剧情介绍 | 日本一区二区不卡视频| 欧美群妇大交群中文字幕| 成人精品小蝌蚪| 另类小说视频一区二区| 亚洲一区二区欧美日韩| 中文字幕欧美日韩一区| 日韩精品一区二区三区在线| 色就色 综合激情| 国产91露脸合集magnet| 久久国产日韩欧美精品| 亚洲国产精品嫩草影院| 国产精品美女久久久久高潮| 日韩免费性生活视频播放| 色94色欧美sute亚洲线路二| 国产成人aaaa| 国精品**一区二区三区在线蜜桃| 亚洲综合男人的天堂| 日韩美女啊v在线免费观看| 久久久精品国产免费观看同学| 欧美电影在哪看比较好| 色屁屁一区二区| 99免费精品视频| 成人午夜免费电影| 国产精品69久久久久水密桃| 另类小说视频一区二区| 男男成人高潮片免费网站| 亚洲第一成人在线| 亚洲综合久久av| 亚洲伊人伊色伊影伊综合网| 国产精品久久久久久久久搜平片| 久久久精品一品道一区| 久久久精品免费观看| 久久综合视频网| 久久久高清一区二区三区| 精品国产91久久久久久久妲己| 日韩视频一区在线观看| 日韩免费一区二区| 精品粉嫩aⅴ一区二区三区四区| 日韩写真欧美这视频| 日韩精品一区二区三区四区| 欧美日韩国产经典色站一区二区三区| 99国产欧美另类久久久精品 | 亚洲女同ⅹxx女同tv| 中文字幕在线一区免费| 最新中文字幕一区二区三区| 亚洲欧洲精品一区二区精品久久久| 国产精品久久久久影院| 亚洲精品欧美激情| 亚洲国产精品一区二区www在线 | 91精品国产aⅴ一区二区| 在线播放亚洲一区| 精品久久久久一区| 久久精品人人爽人人爽| 国产女同性恋一区二区| 亚洲欧洲精品一区二区精品久久久 | 亚洲国产精品一区二区尤物区| 亚洲自拍另类综合| 青青草伊人久久| 久久99九九99精品| 成人午夜精品在线| 欧美伊人久久久久久久久影院| 欧美电影影音先锋| 国产亚洲欧美中文| 亚洲黄色小说网站| 免费视频最近日韩| 国产精品一区久久久久| 92国产精品观看| 欧美伦理视频网站| 国产清纯白嫩初高生在线观看91 | 久久婷婷久久一区二区三区| 国产日韩欧美高清| 亚洲精品国产一区二区三区四区在线| 亚洲成人第一页| 国产成人亚洲综合a∨婷婷| 色域天天综合网| 欧美哺乳videos| 国产精品少妇自拍| 无码av免费一区二区三区试看| 精品一区二区综合| 在线免费观看日韩欧美| 精品国产欧美一区二区| 亚洲婷婷综合色高清在线| 日一区二区三区| 成人免费视频免费观看| 欧美日韩专区在线| 国产精品卡一卡二| 免费av成人在线| 91丨porny丨首页| 精品乱码亚洲一区二区不卡| 亚洲欧美另类久久久精品2019| 久久99久国产精品黄毛片色诱| 91美女片黄在线观看91美女| 亚洲精品一区在线观看| 亚洲午夜久久久久久久久久久 | 久久综合精品国产一区二区三区| 国产欧美一区在线| 日韩黄色在线观看| 成人h动漫精品一区二区| 欧美久久婷婷综合色| 中文字幕在线视频一区| 久久精品国产秦先生| 色菇凉天天综合网| 久久女同精品一区二区| 日韩经典一区二区| 日本高清不卡aⅴ免费网站| 国产亚洲精品7777| 捆绑变态av一区二区三区| 在线观看91精品国产入口| 国产欧美精品一区aⅴ影院| 麻豆成人久久精品二区三区小说| 91福利资源站| 亚洲人成伊人成综合网小说| 国产精品996| 久久久久久久精| 精品一区二区三区在线播放| 欧美军同video69gay| 亚洲一二三区不卡| 欧美中文字幕一二三区视频| 国产精品不卡在线| 东方欧美亚洲色图在线| 久久久国际精品| 国产精品一区三区| 欧美精品一区二区三区很污很色的 | 日韩美女视频一区二区在线观看| 亚洲最新视频在线播放| 色婷婷香蕉在线一区二区| 综合亚洲深深色噜噜狠狠网站| 国产91精品一区二区| 日本一区二区三区国色天香| 国产成人自拍高清视频在线免费播放| 精品福利视频一区二区三区| 久久99在线观看| 2017欧美狠狠色| 国产盗摄女厕一区二区三区| 2021久久国产精品不只是精品 | 激情文学综合插| 久久一二三国产| 国产伦精品一区二区三区免费迷| 精品久久久久香蕉网| 国产乱国产乱300精品| 国产喂奶挤奶一区二区三区| 国产69精品一区二区亚洲孕妇| 久久夜色精品国产噜噜av| 国产老妇另类xxxxx| 国产午夜亚洲精品理论片色戒| 懂色av一区二区三区免费观看 | 久久欧美中文字幕| 国产.欧美.日韩| 亚洲欧美日韩人成在线播放| 日本乱人伦aⅴ精品| 日韩主播视频在线| 欧美一区二区三区播放老司机| 捆绑调教一区二区三区| 国产日本欧洲亚洲| 91麻豆福利精品推荐| 午夜精品123| 久久久欧美精品sm网站| av一区二区三区在线| 亚洲最大成人网4388xx| 日韩欧美的一区二区| 国产69精品久久99不卡| 一卡二卡欧美日韩| 欧美一级欧美一级在线播放| 国产自产2019最新不卡| 最好看的中文字幕久久| 欧美一区二区在线观看| 成人在线综合网| 亚洲18影院在线观看|