Lines Matching refs:op

463 local function parse_load(params, nparams, n, op)
474 return op + base
480 local scale = shr(op, 30)
483 op = op + parse_reg_base(p1) + parse_imm(p2, 9, 12, 0, true) + 0x400
487 op = op + parse_reg_base(p1a) + parse_imm(p2a, 9, 12, 0, true) + 0xc00
490 op = op + parse_reg_base(p1a)
494 op = op + parse_imm_load(imm, scale)
497 op = op + shl(parse_reg(p2b), 16) + 0x00200800
503 op = op + 0x6000
507 op = op + 0x1000
512 if p3b == "lsl" and p3s ~= "" then op = op + 0x6000
513 elseif p3b == "sxtx" then op = op + 0xe000
518 if p3b == "uxtw" then op = op + 0x4000
519 elseif p3b == "sxtw" then op = op + 0xc000
528 op = op + 0x01000000
531 return op
534 local function parse_load_pair(params, nparams, n, op)
537 local scale = shr(op, 30) == 0 and 2 or 3
546 return op + base + 0x01000000
554 op = op + 0x00800000
558 op = op + (wb == "!" and 0x01800000 or 0x01000000)
560 return op + parse_reg_base(p1) + parse_imm(p2, 7, 15, scale, true)
593 local function branch_type(op)
594 if band(op, 0x7c000000) == 0x14000000 then return 0 -- B, BL
595 elseif shr(op, 24) == 0x54 or band(op, 0x7e000000) == 0x34000000 or
596 band(op, 0x3b000000) == 0x18000000 then
598 elseif band(op, 0x7e000000) == 0x36000000 then return 0x1000 -- TBZ, TBNZ
599 elseif band(op, 0x9f000000) == 0x10000000 then return 0x2000 -- ADR
600 elseif band(op, 0x9f000000) == band(0x90000000) then return 0x3000 -- ADRP
884 local op = tonumber(sub(template, 1, 8), 16)
894 op = op + parse_reg(q); n = n + 1
896 op = op + shl(parse_reg(q), 5); n = n + 1
898 op = op + shl(parse_reg(q), 16); n = n + 1
900 op = op + shl(parse_reg(q), 10); n = n + 1
902 op = op + shl(parse_reg(params[n-1]), 16)
908 op = op + 0x80000000
915 op = op + 0x00400000
927 op = parse_load(params, nparams, n, op)
929 op = parse_load_pair(params, nparams, n, op)
933 local m = branch_type(op)
937 op = op + parse_imm12(q); n = n + 1
939 op = op + parse_imm13(q); n = n + 1
941 op = op + parse_imm(q, 16, 5, 0, false); n = n + 1
943 op = op + parse_imm6(q); n = n + 1
945 op = op + parse_imm(q, 6, 16, 0, false); n = n + 1
947 op = op + parse_imm(q, 6, 10, 0, false); n = n + 1
949 op = op + parse_imm(q, 5, 16, 0, false); n = n + 1
951 op = op + parse_imm(q, 4, 0, 0, false); n = n + 1
953 op = op + parse_fpimm(q); n = n + 1
959 op = op + parse_shift(q); n = n + 1
961 op = op + parse_extend(q); n = n + 1
963 op = op + parse_lslx16(q); n = n + 1
965 op = op + parse_cond(q, 0); n = n + 1
967 op = op + parse_cond(q, 1); n = n + 1
973 wputpos(pos, op)