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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? dasm_x86.lua

?? lua的即時(shí)編譯器。支持lua 5.1.2版本
?? LUA
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
-------------------------------------------------------------------------------- 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)

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91精品在线观看| 精品国产3级a| 26uuu欧美| 亚洲综合另类小说| 国产精品人妖ts系列视频| 中文字幕日本乱码精品影院| 亚洲欧洲av另类| 精品一区二区精品| 高清beeg欧美| 色吧成人激情小说| 欧美日韩情趣电影| 欧美日韩精品三区| 亚洲激情综合网| 精品噜噜噜噜久久久久久久久试看 | 蜜桃av一区二区在线观看 | 日韩美女视频19| 国产精品久久午夜夜伦鲁鲁| 国产片一区二区| 久久99国产乱子伦精品免费| 美美哒免费高清在线观看视频一区二区 | 亚洲国产欧美在线| www.日韩av| 国产99久久久久| 欧美日韩的一区二区| 欧美亚洲动漫制服丝袜| 国产69精品一区二区亚洲孕妇| 久久er精品视频| 成人免费视频免费观看| 国产精品影视在线观看| 久久精品国产第一区二区三区| 日韩高清中文字幕一区| 精品亚洲porn| 久久综合狠狠综合久久综合88| 国产日韩欧美综合一区| 中文字幕精品三区| 日韩一区二区三区观看| 精品免费99久久| 亚洲青青青在线视频| 亚洲欧美日韩综合aⅴ视频| 国产欧美日韩另类一区| 日韩欧美在线不卡| 久久综合久久综合亚洲| 欧美日韩日日夜夜| 视频一区视频二区在线观看| 欧美精品久久久久久久多人混战| 26uuu另类欧美亚洲曰本| 日韩美女视频19| 岛国精品一区二区| 自拍偷拍国产精品| 91小视频免费看| 国产乱淫av一区二区三区| 欧美日韩免费一区二区三区| 久久精品国产99国产精品| a美女胸又www黄视频久久| 成人深夜视频在线观看| 国产原创一区二区| 国产精品一区二区不卡| 国产精品毛片大码女人| 国产精品青草综合久久久久99| 国产激情91久久精品导航 | 精品久久一二三区| 欧美一区二区三区视频免费播放| 麻豆91免费观看| 久久精品国产网站| 欧美中文字幕一区二区三区| 欧美日韩免费视频| 国内精品免费**视频| 欧美乱妇23p| 亚洲最快最全在线视频| 一本久久精品一区二区| 日本一区二区综合亚洲| 麻豆高清免费国产一区| 欧美在线不卡一区| 精品毛片乱码1区2区3区 | 欧美日韩国产影片| 日韩一区日韩二区| 国产91精品一区二区麻豆亚洲| 日韩女优制服丝袜电影| 欧美国产激情一区二区三区蜜月| 人人超碰91尤物精品国产| 欧美性猛交一区二区三区精品 | 99久久伊人久久99| 久久久91精品国产一区二区精品| 蜜桃av一区二区在线观看 | 国产一区视频在线看| 日韩一区二区精品葵司在线| 麻豆91在线看| 国产色产综合产在线视频| 国产成人午夜视频| 久久久不卡影院| 国产高清亚洲一区| 国产午夜亚洲精品不卡| 国产精品一二三在| 日韩久久久久久| 日韩欧美国产不卡| 国产精品久久一卡二卡| 亚洲亚洲精品在线观看| 成人高清av在线| 7777精品久久久大香线蕉| 91精品国产免费| 欧美日韩在线三级| 亚洲狠狠丁香婷婷综合久久久| 国产伦精品一区二区三区在线观看 | 国产精品一二三| 欧美剧情片在线观看| 国产精品国产三级国产有无不卡| 麻豆精品国产传媒mv男同| 欧洲一区在线观看| 久久午夜免费电影| 国产精品人人做人人爽人人添| 麻豆精品蜜桃视频网站| av电影在线观看一区| 国产精品亲子伦对白| 精品一区二区三区蜜桃| 91美女在线视频| 亚洲少妇30p| 日本精品视频一区二区三区| 91视频国产资源| 欧美视频在线播放| 精品国产免费视频| 国产精品麻豆视频| 91色porny蝌蚪| 亚洲欧洲精品天堂一级| 在线观看精品一区| 欧美a级理论片| xfplay精品久久| 成人激情开心网| 精品乱码亚洲一区二区不卡| 福利视频网站一区二区三区| 久久综合色鬼综合色| 国产乱子伦一区二区三区国色天香 | 国产三级欧美三级| 懂色av一区二区在线播放| 国产亲近乱来精品视频| 91免费精品国自产拍在线不卡| 国产精品视频在线看| 国产成人福利片| 欧美大胆人体bbbb| 亚洲国产裸拍裸体视频在线观看乱了 | 欧美日韩在线播放一区| 国产一区二区免费视频| 欧美国产精品中文字幕| 欧美人狂配大交3d怪物一区| 国产在线视频一区二区三区| 一区二区三区**美女毛片| 精品久久人人做人人爰| 91丝袜国产在线播放| 国产一区不卡在线| 亚洲电影在线播放| 久久色中文字幕| 色婷婷激情一区二区三区| 无码av免费一区二区三区试看| 欧美精品一区二区三| 色激情天天射综合网| 国产一区二区三区国产| 日韩av电影天堂| 国产精品美女一区二区三区| 色视频欧美一区二区三区| 国产一区二区三区高清播放| 亚洲人精品一区| 精品久久一区二区三区| 日本韩国欧美国产| 国产成人精品影院| 丝瓜av网站精品一区二区| 中文字幕日韩一区| 99精品视频中文字幕| 亚洲免费观看高清完整| 国产精品乱码一区二区三区软件| 欧美一区二区三区婷婷月色| 欧美天天综合网| 97久久精品人人做人人爽| 风流少妇一区二区| 午夜欧美电影在线观看| 精品少妇一区二区三区视频免付费| 精品视频1区2区3区| 色94色欧美sute亚洲线路一ni| 成人免费毛片嘿嘿连载视频| 极品瑜伽女神91| 久久国产剧场电影| 青青草原综合久久大伊人精品 | 欧美疯狂做受xxxx富婆| 色婷婷av一区二区三区大白胸| 亚洲在线观看免费视频| 国产偷v国产偷v亚洲高清| 欧美性猛交一区二区三区精品| 91色视频在线| 色网站国产精品| 色欧美片视频在线观看| 91视频你懂的| 91激情在线视频| 欧美日韩一本到| 色噜噜夜夜夜综合网| 日韩二区三区在线观看| 日韩福利视频网| 久久精品久久综合| 国产一区二区三区在线观看免费视频| 久久91精品久久久久久秒播| 风间由美一区二区av101| 国产v综合v亚洲欧| 成人三级伦理片|