diff --git a/dynasm/dasm_s390x.lua b/dynasm/dasm_s390x.lua index 039681b4..c2c5a79a 100644 --- a/dynasm/dasm_s390x.lua +++ b/dynasm/dasm_s390x.lua @@ -289,6 +289,10 @@ local function is_int20(num) return -shl(1, 19) <= num and num < shl(1, 19) end +local function is_int32(num) + return -shl(1,31) <= num and num label (pc label reference) @@ -1047,7 +1059,9 @@ local function parse_template(params, template, nparams, pos) elseif p == "m" then elseif p == "n" then - + op0 = op0 + shl(parse_gpr(params[1], 4) + local imm = parse_imm(param[2]) + wputhw(op0); waction("IMM32", nil, imm) elseif p == "q" then local d, b, a = parse_mem_b(params[3]) op1 = op1 + shl(parse_gpr(params[1]), 4) + parse_gpr(params[2])