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

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

?? dasm_x86.lua

?? lua的即時編譯器。支持lua 5.1.2版本
?? LUA
?? 第 1 頁 / 共 4 頁
字號:
    map_op[fn.."p_1"] = format("ff:DE%02Xr", nr)    map_op[fn.."p_2"] = format("fFf:DE%02Xr", nr)  end  map_op["fi"..name.."_1"] = format("xd:DA%Xm|xw:nDE%Xm", n, n)end-- FP conditional moves.for cc,n in pairs{ b=0, e=1, be=2, u=3, nb=4, ne=5, nbe=6, nu=7 } do  local n4 = n % 4  local nc = 56000 + n4 * 8 + (n-n4) * 64  map_op["fcmov"..cc.."_1"] = format("ff:%04Xr", nc) -- P6+  map_op["fcmov"..cc.."_2"] = format("Fff:%04XR", nc) -- P6+end-- SSE FP arithmetic ops.for name,n in pairs{ sqrt = 1, add = 8, mul = 9,		     sub = 12, min = 13, div = 14, max = 15 } do  map_op[name.."ps_2"] = format("rmo:0F5%XrM", n)  map_op[name.."ss_2"] = format("rro:F30F5%XrM|rx/od:", n)  map_op[name.."pd_2"] = format("rmo:660F5%XrM", n)  map_op[name.."sd_2"] = format("rro:F20F5%XrM|rx/oq:", n)end-------------------------------------------------------------------------------- Process pattern string.local function dopattern(pat, args, sz, op)  local digit, addin  local opcode = 0  local szov = sz  -- Limit number of section buffer positions used by a single dasm_put().  -- A single opcode needs a maximum of 2 positions. !x64  if secpos+2 > maxsecpos then wflush() end  -- Process each character.  for c in gmatch(pat, ".") do    if match(c, "%x") then	-- Hex digit.      digit = byte(c) - 48      if digit > 48 then digit = digit - 39      elseif digit > 16 then digit = digit - 7 end      opcode = opcode*16 + digit      addin = nil    elseif c == "n" then	-- Disable operand size mods for opcode.      szov = nil    elseif c == "r" then	-- Merge 1st operand regno. into opcode.      addin = args[1].reg; opcode = opcode + addin    elseif c == "R" then	-- Merge 2nd operand regno. into opcode.      addin = args[2].reg; opcode = opcode + addin    elseif c == "m" or c == "M" then	-- Encode ModRM/SIB.      if addin then	opcode = opcode - addin		-- Undo regno opcode merge.      else	addin = opcode % 16		-- Undo last digit.	opcode = (opcode - addin) / 16      end      wputop(szov, opcode); opcode = nil      local imark = (sub(pat, -1) == "I") -- Force a mark (ugly).      -- Put ModRM/SIB with regno/last digit as spare.      wputmrmsib(args[c == "m" and 1 or 2], addin, imark)    else      if opcode then wputop(szov, opcode); opcode = nil end -- Flush opcode.      if c == "o" or c == "O" then	-- Offset (pure 32 bit displacement).	wputdarg(args[c == "o" and 1 or 2].disp)      else	-- Anything else is an immediate operand.	local a = args[#args]	local mode, imm = a.mode, a.imm	if mode == "iJ" and not match("iIJ", c) then	  werror("bad operand size for label")	end	if c == "S" then	  wputsbarg(imm)	elseif c == "U" then	  wputbarg(imm)	elseif c == "W" then	  wputwarg(imm)	elseif c == "i" or c == "I" then	  if mode == "iJ" then	    wputlabel("IMM_", imm, 1)	  elseif mode == "iI" and c == "I" then	    waction(sz == "w" and "IMM_WB" or "IMM_DB", imm)	  else	    wputszarg(sz, imm)	  end	elseif c == "J" then	  if mode == "iPJ" then	    waction("REL_A", imm) -- !x64 (secpos)	  else	    wputlabel("REL_", imm, 2)	  end	else	  werror("bad char `"..c.."' in pattern `"..pat.."' for `"..op.."'")	end      end    end  end  if opcode then wputop(szov, opcode) endend-------------------------------------------------------------------------------- Mapping of operand modes to short names. Suppress output with '#'.local map_modename = {  r = "reg", R = "eax", C = "cl", x = "mem", m = "mrm", i = "imm",  f = "stx", F = "st0", J = "lbl", ["1"] = "1",  I = "#", S = "#", O = "#",}-- Return a table/string showing all possible operand modes.local function templatehelp(template, nparams)  if nparams == 0 then return "" end  local t = {}  for tm in gmatch(template, "[^%|]+") do    local s = map_modename[sub(tm, 1, 1)]    s = s..gsub(sub(tm, 2, nparams), ".", function(c)      return ", "..map_modename[c]    end)    if not match(s, "#") then t[#t+1] = s end  end  return tend-- Match operand modes against mode match part of template.local function matchtm(tm, args)  for i=1,#args do    if not match(args[i].mode, sub(tm, i, i)) then return end  end  return trueend-- Handle opcodes defined with template strings.map_op[".template__"] = function(params, template, nparams)  if not params then return templatehelp(template, nparams) end  local args = {}  -- Zero-operand opcodes have no match part.  if #params == 0 then    dopattern(template, args, "d", params.op)    return  end  -- Determine common operand size (coerce undefined size) or flag as mixed.  local sz, szmix  for i,p in ipairs(params) do    args[i] = parseoperand(p)    local nsz = args[i].opsize    if nsz then      if sz and sz ~= nsz then szmix = true else sz = nsz end    end  end  -- Try all match:pattern pairs (separated by '|').  local gotmatch, lastpat  for tm in gmatch(template, "[^%|]+") do    -- Split off size match (starts after mode match) and pattern string.    local szm, pat = match(tm, "^(.-):(.*)$", #args+1)    if pat == "" then pat = lastpat else lastpat = pat end    if matchtm(tm, args) then      local prefix = sub(szm, 1, 1)      if prefix == "/" then -- Match both operand sizes.	if args[1].opsize == sub(szm, 2, 2) and	   args[2].opsize == sub(szm, 3, 3) then	  dopattern(pat, args, sz, params.op) -- Process pattern string.	  return	end      else -- Match common operand size.	local szp = sz	if szm == "" then szm = "dwb" end -- Default size match.	if prefix == "1" then szp = args[1].opsize; szmix = nil	elseif prefix == "2" then szp = args[2].opsize; szmix = nil end	if not szmix and (prefix == "." or match(szm, szp or "#")) then	  dopattern(pat, args, szp, params.op) -- Process pattern string.	  return	end      end      gotmatch = true    end  end  local msg = "bad operand mode"  if gotmatch then    if szmix then      msg = "mixed operand size"    else      msg = sz and "bad operand size" or "missing operand size"    end  end  werror(msg.." in `"..opmodestr(params.op, args).."'")end-------------------------------------------------------------------------------- Pseudo-opcodes for data storage.local function op_data(params)  if not params then return "imm..." end  local sz = sub(params.op, 2, 2)  if sz == "a" then sz = addrsize end  for _,p in ipairs(params) do    local a = parseoperand(p)    if sub(a.mode, 1, 1) ~= "i" or (a.opsize and a.opsize ~= sz) then      werror("bad mode or size in `"..p.."'")    end    if a.mode == "iJ" then      wputlabel("IMM_", a.imm, 1)    else      wputszarg(sz, a.imm)    end  endendmap_op[".byte_*"] = op_datamap_op[".sbyte_*"] = op_datamap_op[".word_*"] = op_datamap_op[".dword_*"] = op_datamap_op[".aword_*"] = op_data-------------------------------------------------------------------------------- Pseudo-opcode to mark the position where the action list is to be emitted.map_op[".actionlist_1"] = function(params)  if not params then return "cvar" end  local name = params[1] -- No syntax check. You get to keep the pieces.  wline(function(out) writeactions(out, name) end)end-- Pseudo-opcode to mark the position where the global enum is to be emitted.map_op[".globals_1"] = function(params)  if not params then return "prefix" end  local prefix = params[1] -- No syntax check. You get to keep the pieces.  wline(function(out) writeglobals(out, prefix) end)end-------------------------------------------------------------------------------- Label pseudo-opcode (converted from trailing colon form).map_op[".label_2"] = function(params)  if not params then return "[1-9] | ->global | =>pcexpr  [, addr]" end  local a = parseoperand(params[1])  local mode, imm = a.mode, a.imm  if type(imm) == "number" and (mode == "iJ" or (imm >= 1 and imm <= 9)) then    -- Local label (1: ... 9:) or global label (->global:).    waction("LABEL_LG", nil, 1)    wputxb(imm)  elseif mode == "iJ" then    -- PC label (=>pcexpr:).    waction("LABEL_PC", imm)  else    werror("bad label definition")  end  -- SETLABEL must immediately follow LABEL_LG/LABEL_PC.  local addr = params[2]  if addr then    local a = parseoperand(params[2])    if a.mode == "iPJ" then      waction("SETLABEL", a.imm) -- !x64 (secpos)    else      werror("bad label assignment")    end  endendmap_op[".label_1"] = map_op[".label_2"]-------------------------------------------------------------------------------- Alignment pseudo-opcode.map_op[".align_1"] = function(params)  if not params then return "numpow2" end  local align = tonumber(params[1]) or map_opsizenum[map_opsize[params[1]]]  if align then    local x = align    -- Must be a power of 2 in the range (2 ... 256).    for i=1,8 do      x = x / 2      if x == 1 then	waction("ALIGN", nil, 1)	wputxb(align-1) -- Action byte is 2**n-1.	return      end    end  end  werror("bad alignment")end-- Spacing pseudo-opcode.map_op[".space_2"] = function(params)  if not params then return "num [, filler]" end  waction("SPACE", params[1])  local fill = params[2]  if fill then    fill = tonumber(fill)    if not fill or fill < 0 or fill > 255 then werror("bad filler") end  end  wputxb(fill or 0)endmap_op[".space_1"] = map_op[".space_2"]-------------------------------------------------------------------------------- Pseudo-opcode for (primitive) type definitions (map to C types).map_op[".type_3"] = function(params, nparams)  if not params then    return nparams == 2 and "name, ctype" or "name, ctype, reg"  end  local name, ctype, reg = params[1], params[2], params[3]  if not match(name, "^[%a_][%w_]*$") then    werror("bad type name `"..name.."'")  end  local tp = map_type[name]  if tp then    werror("duplicate type `"..name.."'")  end  if reg and not map_reg_valid_base[reg] then    werror("bad base register `"..(map_reg_rev[reg] or reg).."'")  end  -- Add #type to defines. A bit unclean to put it in map_archdef.  map_archdef["#"..name] = "sizeof("..ctype..")"  -- Add new type and emit shortcut define.  local num = ctypenum + 1  map_type[name] = {    ctype = ctype,    ctypefmt = format("Dt%X(%%s)", num),    reg = reg,  }  wline(format("#define Dt%X(_V) (int)&(((%s *)0)_V)", num, ctype))  ctypenum = numendmap_op[".type_2"] = map_op[".type_3"]-- Dump type definitions.local function dumptypes(out, lvl)  local t = {}  for name in pairs(map_type) do t[#t+1] = name end  sort(t)  out:write("Type definitions:\n")  for _,name in ipairs(t) do    local tp = map_type[name]    local reg = tp.reg and map_reg_rev[tp.reg] or ""    out:write(format("  %-20s %-20s %s\n", name, tp.ctype, reg))  end  out:write("\n")end-------------------------------------------------------------------------------- Set the current section.function _M.section(num)  waction("SECTION")  wputxb(num)  wflush(true) -- SECTION is a terminal action.end-------------------------------------------------------------------------------- Dump architecture description.function _M.dumparch(out)  out:write(format("DynASM %s version %s, released %s\n\n",    _info.arch, _info.version, _info.release))  dumpregs(out)  dumpactions(out)end-- Dump all user defined elements.function _M.dumpdef(out, lvl)  dumptypes(out, lvl)  dumpglobals(out, lvl)end-------------------------------------------------------------------------------- Pass callbacks from/to the DynASM core.function _M.passcb(wl, we, wf, ww)  wline, werror, wfatal, wwarn = wl, we, wf, ww  return wflushend-- Setup the arch-specific module.function _M.setup(arch, opt)  g_arch, g_opt = arch, optend-- Merge the core maps and the arch-specific maps.function _M.mergemaps(map_coreop, map_def)  setmetatable(map_op, { __index = map_coreop })  setmetatable(map_def, { __index = map_archdef })  return map_op, map_defendreturn _M------------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情五月播播久久久精品| 91.com视频| 欧美一区二区国产| 国产精品久久久久久久久免费相片 | 亚洲精品在线三区| 亚洲精品亚洲人成人网| 国产精品1区2区3区在线观看| 欧美顶级少妇做爰| 亚洲一区二区欧美日韩| 国v精品久久久网| 欧美一二三区在线| 一二三四社区欧美黄| 成人网页在线观看| 国产日韩欧美一区二区三区乱码| 久久精品国产亚洲高清剧情介绍 | 天使萌一区二区三区免费观看| 成人app网站| 久久久久久久久久看片| 日本成人在线网站| 欧美性生交片4| 最新日韩在线视频| 波多野结衣91| 中文字幕一区二区三区色视频| 国产资源精品在线观看| 精品处破学生在线二十三| 免费高清在线一区| 制服丝袜中文字幕亚洲| 午夜精品福利视频网站| 欧美日韩精品系列| 亚洲电影第三页| 欧美性极品少妇| 亚洲大片精品永久免费| 欧美性猛交一区二区三区精品 | 亚洲国产精品黑人久久久| 国产精品一二三四区| 精品国产乱码久久久久久老虎| 免费成人在线网站| 日韩免费视频线观看| 狠狠狠色丁香婷婷综合久久五月| 欧美一级理论片| 黄页视频在线91| 国产日韩欧美综合在线| 99久久久久久99| 亚洲综合一区二区精品导航| 欧美视频日韩视频在线观看| 日韩影院免费视频| 91精品国产综合久久小美女| 蜜桃av噜噜一区二区三区小说| 精品第一国产综合精品aⅴ| 国产精品99久久久久久久vr | 在线精品视频一区二区三四| 亚洲国产综合91精品麻豆| 欧美电影在线免费观看| 韩国成人福利片在线播放| 国产欧美一区二区精品秋霞影院| 岛国一区二区在线观看| 一区二区三区在线高清| 日韩欧美一级二级| 国产成人啪午夜精品网站男同| 国产精品久久久久久久久搜平片| 欧美性大战xxxxx久久久| 麻豆精品在线播放| 国产精品区一区二区三区| 欧美色图一区二区三区| 国产毛片精品视频| 亚洲专区一二三| 久久久久久亚洲综合| 在线观看亚洲a| 国产一区二区影院| 亚洲一区二区精品久久av| 精品国产91久久久久久久妲己| 成人激情综合网站| 全国精品久久少妇| 亚洲欧洲制服丝袜| 精品久久99ma| 欧美日韩三级一区| zzijzzij亚洲日本少妇熟睡| 男女视频一区二区| 一区二区三区日韩欧美| 久久精品亚洲国产奇米99| 91久久人澡人人添人人爽欧美| 精品影视av免费| 亚洲图片一区二区| 亚洲丝袜制服诱惑| 久久久亚洲国产美女国产盗摄| 精品视频1区2区3区| 福利一区福利二区| 蜜乳av一区二区| 午夜电影一区二区| 一区二区三区免费| 国产精品久久夜| 欧美精品一区二区蜜臀亚洲| 欧美日韩国产中文| 日本福利一区二区| aa级大片欧美| 国产99久久久久| 蜜臀av亚洲一区中文字幕| 一区二区高清在线| 亚洲色图另类专区| 国产精品免费人成网站| 精品国偷自产国产一区| 日韩欧美国产麻豆| 制服丝袜亚洲色图| 欧美日韩高清一区二区| 91九色02白丝porn| 色诱亚洲精品久久久久久| 成人开心网精品视频| 国产毛片精品一区| 国产福利91精品一区| 国产成人免费在线视频| 国产精品一区二区视频| 日韩国产欧美一区二区三区| **欧美大码日韩| 17c精品麻豆一区二区免费| 一色桃子久久精品亚洲| 中文字幕中文字幕一区| 国产精品视频免费| 中文字幕日韩av资源站| 中文字幕在线不卡一区二区三区 | 亚洲精品一区二区在线观看| 欧美成人精品高清在线播放| 日韩欧美一区在线观看| 精品国产一区久久| 久久人人超碰精品| 国产欧美一二三区| 国产精品久久久久久亚洲伦| 最新高清无码专区| 亚洲美女视频在线观看| 亚洲国产综合91精品麻豆| 日韩福利电影在线观看| 免费看黄色91| 东方aⅴ免费观看久久av| bt欧美亚洲午夜电影天堂| 91网站最新网址| 欧美欧美午夜aⅴ在线观看| 91精品视频网| 久久久精品日韩欧美| 日韩一区欧美小说| 午夜影院久久久| 国产真实乱对白精彩久久| 99re热这里只有精品视频| 欧美综合一区二区三区| 51精品国自产在线| 久久精品一区蜜桃臀影院| 亚洲免费观看在线视频| 午夜精品久久久久久| 国产伦精品一区二区三区免费| 成人国产电影网| 91精品国产麻豆| 国产精品成人一区二区艾草 | 一区二区免费在线播放| 蜜臀a∨国产成人精品| 懂色av噜噜一区二区三区av| 欧美视频日韩视频| 国产视频在线观看一区二区三区| 中文字幕在线不卡一区 | 成人av在线观| 337p亚洲精品色噜噜| 国产精品久久久久永久免费观看 | 亚洲bt欧美bt精品| 成人污污视频在线观看| 欧美精品久久久久久久久老牛影院| 精品久久国产97色综合| 亚洲免费观看高清完整版在线观看 | 亚洲第一精品在线| 国产成人av影院| 91精品国产高清一区二区三区| 国产精品久久久久久久午夜片| 免费成人你懂的| 日本道在线观看一区二区| 久久蜜桃av一区精品变态类天堂| 亚洲高清视频在线| av电影一区二区| 国产无遮挡一区二区三区毛片日本| 日日欢夜夜爽一区| 欧美在线视频全部完| 国产精品狼人久久影院观看方式| 九一久久久久久| 欧美日韩亚洲国产综合| 亚洲男人的天堂在线观看| 成人激情免费网站| 久久精品欧美日韩精品| 久久国产精品72免费观看| 欧美精品一卡两卡| 亚洲一区视频在线观看视频| 色综合久久久久综合99| 国产精品入口麻豆九色| 国产91丝袜在线观看| 国产亚洲精久久久久久| 激情亚洲综合在线| 日韩欧美国产三级电影视频| 五月激情六月综合| 欧美人妖巨大在线| 日韩精品成人一区二区在线| 欧美日韩一区中文字幕| 亚洲一区av在线| 欧美美女一区二区三区| 午夜精品一区二区三区电影天堂 | 欧美精品一区二区精品网| 日本欧美一区二区在线观看|