Esempio n. 1
0
        private void RewriteLwa()
        {
            var dtDst  = arch.WordWidth;
            var dst    = Reg(instrCur.Operands[0]);
            var mem    = Mem(instrCur.Operands[1]);
            var ea     = mem.EffectiveAddress;
            var fnType = new FunctionType(
                new Identifier("", PrimitiveType.Word32, null),
                new Identifier("ea", new Pointer(PrimitiveType.Word32, 32), null));
            var e = host.CallIntrinsic("__atomic_load_w32", fnType, ea);

            if (mem.DataType.BitSize < dtDst.BitSize)
            {
                e = m.Convert(e, e.DataType, dtDst);
            }
            m.Assign(dst, e);
        }