aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2009-12-28 21:00:03 +0100
committerMike Pall <mike>2009-12-28 21:00:03 +0100
commitda65e0dfed4107adcd10bfff671af3630f304f35 (patch)
treee05df20c05da3e4b202b0b0229d940af6504fb34
parent8bb38bd93b01ca1107096a7e711c80289488805a (diff)
downloadluajit-da65e0dfed4107adcd10bfff671af3630f304f35.tar.gz
luajit-da65e0dfed4107adcd10bfff671af3630f304f35.tar.bz2
luajit-da65e0dfed4107adcd10bfff671af3630f304f35.zip
Fix DynASM x64 encoding for qword-only instructions.
-rw-r--r--dynasm/dasm_x86.lua19
1 files changed, 10 insertions, 9 deletions
diff --git a/dynasm/dasm_x86.lua b/dynasm/dasm_x86.lua
index 8a370f9b..d985e3ff 100644
--- a/dynasm/dasm_x86.lua
+++ b/dynasm/dasm_x86.lua
@@ -922,8 +922,9 @@ local map_op = {
922 -- 3F: *aas 922 -- 3F: *aas
923 inc_1 = x64 and "m:FF0m" or "rdw:40r|m:FF0m", 923 inc_1 = x64 and "m:FF0m" or "rdw:40r|m:FF0m",
924 dec_1 = x64 and "m:FF1m" or "rdw:48r|m:FF1m", 924 dec_1 = x64 and "m:FF1m" or "rdw:48r|m:FF1m",
925 push_1 = (x64 and "rqw:50r|mqw:FF6m" or "rdw:50r|mdw:FF6m").."|S.:6AS|ib:n6Ai|i.:68i", 925 push_1 = (x64 and "rq:n50r|rw:50r|mq:nFF6m|mw:FF6m" or
926 pop_1 = x64 and "rqw:58r|mqw:8F0m" or "rdw:58r|mdw:8F0m", 926 "rdw:50r|mdw:FF6m").."|S.:6AS|ib:n6Ai|i.:68i",
927 pop_1 = x64 and "rq:n58r|rw:58r|mq:n8F0m|mw:8F0m" or "rdw:58r|mdw:8F0m",
927 -- 60: *pusha, *pushad, *pushaw 928 -- 60: *pusha, *pushad, *pushaw
928 -- 61: *popa, *popad, *popaw 929 -- 61: *popa, *popad, *popaw
929 -- 62: *bound rdw,x 930 -- 62: *bound rdw,x
@@ -970,11 +971,11 @@ local map_op = {
970 wait_0 = "9B", 971 wait_0 = "9B",
971 fwait_0 = "9B", 972 fwait_0 = "9B",
972 pushf_0 = "9C", 973 pushf_0 = "9C",
973 pushfw_0 = "669C", 974 pushfd_0 = not x64 and "9C",
974 pushfd_0 = "9C", 975 pushfq_0 = x64 and "9C",
975 popf_0 = "9D", 976 popf_0 = "9D",
976 popfw_0 = "669D", 977 popfd_0 = not x64 and "9D",
977 popfd_0 = "9D", 978 popfq_0 = x64 and "9D",
978 sahf_0 = "9E", 979 sahf_0 = "9E",
979 lahf_0 = "9F", 980 lahf_0 = "9F",
980 mov_2 = "OR:A3o|RO:A1O|mr:89Rm|rm:8BrM|rib:nB0ri|ridw:B8ri|mi:C70mi", 981 mov_2 = "OR:A3o|RO:A1O|mr:89Rm|rm:8BrM|rib:nB0ri|ridw:B8ri|mi:C70mi",
@@ -1030,8 +1031,8 @@ local map_op = {
1030 -- E5: *in Rdw,ib 1031 -- E5: *in Rdw,ib
1031 -- E6: *out ib,Rb 1032 -- E6: *out ib,Rb
1032 -- E7: *out ib,Rdw 1033 -- E7: *out ib,Rdw
1033 call_1 = x64 and "mq:FF2m|J.:E8J" or "md:FF2m|J.:E8J", 1034 call_1 = x64 and "mq:nFF2m|J.:E8nJ" or "md:FF2m|J.:E8J",
1034 jmp_1 = x64 and "mq:FF4m|J.:E9J" or "md:FF4m|J.:E9J", -- short: EB 1035 jmp_1 = x64 and "mq:nFF4m|J.:E9nJ" or "md:FF4m|J.:E9J", -- short: EB
1035 -- EA: *jmp iw:idw 1036 -- EA: *jmp iw:idw
1036 -- EB: jmp ib 1037 -- EB: jmp ib
1037 -- EC: *in Rb,dx 1038 -- EC: *in Rb,dx
@@ -1423,7 +1424,7 @@ end
1423 1424
1424-- Conditional ops. 1425-- Conditional ops.
1425for cc,n in pairs(map_cc) do 1426for cc,n in pairs(map_cc) do
1426 map_op["j"..cc.."_1"] = format("J.:0F8%XJ", n) -- short: 7%X 1427 map_op["j"..cc.."_1"] = format("J.:n0F8%XJ", n) -- short: 7%X
1427 map_op["set"..cc.."_1"] = format("mb:n0F9%X2m", n) 1428 map_op["set"..cc.."_1"] = format("mb:n0F9%X2m", n)
1428 map_op["cmov"..cc.."_2"] = format("rmqdw:0F4%XrM", n) -- P6+ 1429 map_op["cmov"..cc.."_2"] = format("rmqdw:0F4%XrM", n) -- P6+
1429end 1430end