aboutsummaryrefslogtreecommitdiff
path: root/dynasm
diff options
context:
space:
mode:
authorMike Pall <mike>2012-01-23 19:06:58 +0100
committerMike Pall <mike>2012-01-23 19:06:58 +0100
commitb9651b4ba2a7a76d722acbb4e13d29866d517868 (patch)
tree420677cf08e1327b5b21c162bf168a73afa4ca2c /dynasm
parenta72134e28099dac14765cd84810844c742b34029 (diff)
downloadluajit-b9651b4ba2a7a76d722acbb4e13d29866d517868.tar.gz
luajit-b9651b4ba2a7a76d722acbb4e13d29866d517868.tar.bz2
luajit-b9651b4ba2a7a76d722acbb4e13d29866d517868.zip
MIPS: Add missing opcodes to the DynASM MIPS module plus minor fixes.
Allow single dot as macro name.
Diffstat (limited to 'dynasm')
-rw-r--r--dynasm/dasm_mips.lua17
-rw-r--r--dynasm/dynasm.lua2
2 files changed, 15 insertions, 4 deletions
diff --git a/dynasm/dasm_mips.lua b/dynasm/dasm_mips.lua
index 5cbae8ba..d8ce3b0c 100644
--- a/dynasm/dasm_mips.lua
+++ b/dynasm/dasm_mips.lua
@@ -11,7 +11,7 @@ local _info = {
11 description = "DynASM MIPS module", 11 description = "DynASM MIPS module",
12 version = "1.3.0", 12 version = "1.3.0",
13 vernum = 10300, 13 vernum = 10300,
14 release = "2011-12-16", 14 release = "2012-01-23",
15 author = "Mike Pall", 15 author = "Mike Pall",
16 license = "MIT", 16 license = "MIT",
17} 17}
@@ -278,7 +278,9 @@ local map_op = {
278 -- Opcode SPECIAL. 278 -- Opcode SPECIAL.
279 nop_0 = "00000000", 279 nop_0 = "00000000",
280 sll_3 = "00000000DTA", 280 sll_3 = "00000000DTA",
281 movf_2 = "00000001DS",
281 movf_3 = "00000001DSC", 282 movf_3 = "00000001DSC",
283 movt_2 = "00010001DS",
282 movt_3 = "00010001DSC", 284 movt_3 = "00010001DSC",
283 srl_3 = "00000002DTA", 285 srl_3 = "00000002DTA",
284 rotr_3 = "00200002DTA", 286 rotr_3 = "00200002DTA",
@@ -309,10 +311,12 @@ local map_op = {
309 move_2 = "00000021DS", 311 move_2 = "00000021DS",
310 addu_3 = "00000021DST", 312 addu_3 = "00000021DST",
311 sub_3 = "00000022DST", 313 sub_3 = "00000022DST",
314 negu_2 = "00000023DT",
312 subu_3 = "00000023DST", 315 subu_3 = "00000023DST",
313 and_3 = "00000024DST", 316 and_3 = "00000024DST",
314 or_3 = "00000025DST", 317 or_3 = "00000025DST",
315 xor_3 = "00000026DST", 318 xor_3 = "00000026DST",
319 not_2 = "00000027DS",
316 nor_3 = "00000027DST", 320 nor_3 = "00000027DST",
317 slt_3 = "0000002aDST", 321 slt_3 = "0000002aDST",
318 sltu_3 = "0000002bDST", 322 sltu_3 = "0000002bDST",
@@ -341,6 +345,7 @@ local map_op = {
341 teqi_2 = "040c0000SI", 345 teqi_2 = "040c0000SI",
342 tnei_2 = "040e0000SI", 346 tnei_2 = "040e0000SI",
343 bltzal_2 = "04100000SB", 347 bltzal_2 = "04100000SB",
348 bal_1 = "04110000B",
344 bgezal_2 = "04110000SB", 349 bgezal_2 = "04110000SB",
345 bltzall_2 = "04120000SB", 350 bltzall_2 = "04120000SB",
346 bgezall_2 = "04130000SB", 351 bgezall_2 = "04130000SB",
@@ -659,8 +664,14 @@ end
659local function parse_disp(disp) 664local function parse_disp(disp)
660 local imm, reg = match(disp, "^(.*)%(([%w_:]+)%)$") 665 local imm, reg = match(disp, "^(.*)%(([%w_:]+)%)$")
661 if imm then 666 if imm then
662 local r = parse_gpr(reg) 667 local r = parse_gpr(reg)*2^21
663 return r*2^21 + parse_imm(imm, 16, 0, 0, true) 668 local extname = match(imm, "^extern%s+(%S+)$")
669 if extname then
670 waction("REL_EXT", map_extern[extname], nil, 1)
671 return r
672 else
673 return r + parse_imm(imm, 16, 0, 0, true)
674 end
664 end 675 end
665 local reg, tailr = match(disp, "^([%w_:]+)%s*(.*)$") 676 local reg, tailr = match(disp, "^([%w_:]+)%s*(.*)$")
666 if reg and tailr ~= "" then 677 if reg and tailr ~= "" then
diff --git a/dynasm/dynasm.lua b/dynasm/dynasm.lua
index 8ff98513..34974c06 100644
--- a/dynasm/dynasm.lua
+++ b/dynasm/dynasm.lua
@@ -390,7 +390,7 @@ map_coreop[".macro_*"] = function(mparams)
390 -- Split off and validate macro name. 390 -- Split off and validate macro name.
391 local name = remove(mparams, 1) 391 local name = remove(mparams, 1)
392 if not name then werror("missing macro name") end 392 if not name then werror("missing macro name") end
393 if not (match(name, "^[%a_][%w_%.]*$") or match(name, "^%.[%w_%.]+$")) then 393 if not (match(name, "^[%a_][%w_%.]*$") or match(name, "^%.[%w_%.]*$")) then
394 wfatal("bad macro name `"..name.."'") 394 wfatal("bad macro name `"..name.."'")
395 end 395 end
396 -- Validate macro parameter names. 396 -- Validate macro parameter names.