aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2009-12-15 04:45:34 +0100
committerMike Pall <mike>2009-12-15 04:45:34 +0100
commit267d7152abbb99f2fdd69e6ece40958589c25d6f (patch)
tree273c3bb6cd93799dc25988aa02a0c4114b8008eb
parent31f0074c5e74a317525de249a8d51428f0847e21 (diff)
downloadluajit-267d7152abbb99f2fdd69e6ece40958589c25d6f.tar.gz
luajit-267d7152abbb99f2fdd69e6ece40958589c25d6f.tar.bz2
luajit-267d7152abbb99f2fdd69e6ece40958589c25d6f.zip
Allow 32 bit regs for indexing even for DynASM x64.
-rw-r--r--dynasm/dasm_x86.lua9
1 files changed, 5 insertions, 4 deletions
diff --git a/dynasm/dasm_x86.lua b/dynasm/dasm_x86.lua
index 1b79d3af..41144e12 100644
--- a/dynasm/dasm_x86.lua
+++ b/dynasm/dasm_x86.lua
@@ -273,7 +273,7 @@ local function mkrmap(sz, cl, names)
273 map_reg_rev[cname] = cl 273 map_reg_rev[cname] = cl
274 map_reg_num[cname] = -1 274 map_reg_num[cname] = -1
275 map_reg_opsize[cname] = sz 275 map_reg_opsize[cname] = sz
276 if sz == addrsize then 276 if sz == addrsize or sz == "d" then
277 map_reg_valid_base[cname] = true 277 map_reg_valid_base[cname] = true
278 map_reg_valid_index[cname] = true 278 map_reg_valid_index[cname] = true
279 end 279 end
@@ -285,7 +285,7 @@ local function mkrmap(sz, cl, names)
285 map_reg_rev[iname] = name 285 map_reg_rev[iname] = name
286 map_reg_num[iname] = n-1 286 map_reg_num[iname] = n-1
287 map_reg_opsize[iname] = sz 287 map_reg_opsize[iname] = sz
288 if sz == addrsize then 288 if sz == addrsize or sz == "d" then
289 map_reg_valid_base[iname] = true 289 map_reg_valid_base[iname] = true
290 map_reg_valid_index[iname] = true 290 map_reg_valid_index[iname] = true
291 end 291 end
@@ -303,7 +303,7 @@ local function mkrmap(sz, cl, names)
303 map_reg_rev[iname] = name 303 map_reg_rev[iname] = name
304 map_reg_num[iname] = i 304 map_reg_num[iname] = i
305 map_reg_opsize[iname] = sz 305 map_reg_opsize[iname] = sz
306 if sz == addrsize then 306 if sz == addrsize or sz == "d" then
307 map_reg_valid_base[iname] = true 307 map_reg_valid_base[iname] = true
308 map_reg_valid_index[iname] = true 308 map_reg_valid_index[iname] = true
309 end 309 end
@@ -320,7 +320,8 @@ mkrmap("d", "Rd", {"eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi"})
320mkrmap("w", "Rw", {"ax", "cx", "dx", "bx", "sp", "bp", "si", "di"}) 320mkrmap("w", "Rw", {"ax", "cx", "dx", "bx", "sp", "bp", "si", "di"})
321mkrmap("b", "Rb", {"al", "cl", "dl", "bl", "ah", "ch", "dh", "bh"}) 321mkrmap("b", "Rb", {"al", "cl", "dl", "bl", "ah", "ch", "dh", "bh"})
322-- !x64: ah, ch, dh, bh not valid with REX, r4b-r15b require REX 322-- !x64: ah, ch, dh, bh not valid with REX, r4b-r15b require REX
323map_reg_valid_index[map_archdef[x64 and "rsp" or "esp"]] = false 323map_reg_valid_index[map_archdef.esp] = false
324if x64 then map_reg_valid_index[map_archdef.rsp] = false end
324map_archdef["Ra"] = "@"..addrsize 325map_archdef["Ra"] = "@"..addrsize
325 326
326-- FP registers (internally tword sized, but use "f" as operand size). 327-- FP registers (internally tword sized, but use "f" as operand size).