Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/windirstat/windirstat.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/lua/dynasm/dasm_x86.lua')
-rw-r--r--3rdparty/lua/dynasm/dasm_x86.lua22
1 files changed, 18 insertions, 4 deletions
diff --git a/3rdparty/lua/dynasm/dasm_x86.lua b/3rdparty/lua/dynasm/dasm_x86.lua
index 1f0981f..7ca061d 100644
--- a/3rdparty/lua/dynasm/dasm_x86.lua
+++ b/3rdparty/lua/dynasm/dasm_x86.lua
@@ -1,7 +1,7 @@
------------------------------------------------------------------------------
-- DynASM x86/x64 module.
--
--- Copyright (C) 2005-2013 Mike Pall. All rights reserved.
+-- Copyright (C) 2005-2015 Mike Pall. All rights reserved.
-- See dynasm.lua for full copyright notice.
------------------------------------------------------------------------------
@@ -1040,7 +1040,7 @@ local map_op = {
-- ED: *in Rdw,dx
-- EE: *out dx,Rb
-- EF: *out dx,Rdw
- -- F0: *lock
+ lock_0 = "F0",
int1_0 = "F1",
repne_0 = "F2",
repnz_0 = "F2",
@@ -1081,6 +1081,9 @@ local map_op = {
btr_2 = "mrqdw:0FB3Rm|miqdw:0FBA6mU",
bts_2 = "mrqdw:0FABRm|miqdw:0FBA5mU",
+ shld_3 = "mriqdw:0FA4RmU|mrCqdw:0FA5Rm",
+ shrd_3 = "mriqdw:0FACRmU|mrCqdw:0FADRm",
+
rdtsc_0 = "0F31", -- P1+
cpuid_0 = "0FA2", -- P1+
@@ -1114,6 +1117,9 @@ local map_op = {
fucompp_0 = "DAE9",
fcompp_0 = "DED9",
+ fldenv_1 = "x.:D94m",
+ fnstenv_1 = "x.:D96m",
+ fstenv_1 = "x.:9BD96m",
fldcw_1 = "xw:nD95m",
fstcw_1 = "xw:n9BD97m",
fnstcw_1 = "xw:nD97m",
@@ -1189,6 +1195,8 @@ local map_op = {
cvttps2dq_2 = "rmo:F30F5BrM",
cvttsd2si_2 = "rr/do:F20F2CrM|rr/qo:|rx/dq:|rxq:",
cvttss2si_2 = "rr/do:F30F2CrM|rr/qo:|rxd:|rx/qd:",
+ fxsave_1 = "x.:0FAE0m",
+ fxrstor_1 = "x.:0FAE1m",
ldmxcsr_1 = "xd:0FAE2m",
lfence_0 = "0FAEE8",
maskmovdqu_2 = "rro:660FF7rM",
@@ -1678,7 +1686,7 @@ if x64 then
function map_op.mov64_2(params)
if not params then return { "reg, imm", "reg, [disp]", "[disp], reg" } end
if secpos+2 > maxsecpos then wflush() end
- local opcode, op64, sz, rex
+ local opcode, op64, sz, rex, vreg
local op64 = match(params[1], "^%[%s*(.-)%s*%]$")
if op64 then
local a = parseoperand(params[2])
@@ -1699,11 +1707,17 @@ if x64 then
werror("bad operand mode")
end
op64 = params[2]
- opcode = 0xb8 + band(a.reg, 7) -- !x64: no VREG support.
+ if a.reg == -1 then
+ vreg = a.vreg
+ opcode = 0xb8
+ else
+ opcode = 0xb8 + band(a.reg, 7)
+ end
rex = a.reg > 7 and 9 or 8
end
end
wputop(sz, opcode, rex)
+ if vreg then waction("VREG", vreg); wputxb(0) end
waction("IMM_D", format("(unsigned int)(%s)", op64))
waction("IMM_D", format("(unsigned int)((%s)>>32)", op64))
end