Beispiel #1
0
        internal override void MethodGen()
        {
            Parent.Class.Fields.TryGetValue("Length", out Field lengthField);
            Parent.Class.Fields.TryGetValue("Data", out Field dataField);

            // 复制Length
            Constructor.AddLocal(Method.Params[1].Offset);      // 传入的String
            Constructor.AddLoadT(Method.Params[1].Type);
            Constructor.AddLoadNonStatic(lengthField.ConstantPoolIndex);

            Constructor.AddLocal(Method.Params[0].Offset);      // 构造对象
            Constructor.AddLoadT(Method.Params[0].Type);
            Constructor.AddStoreNonStatic(lengthField.ConstantPoolIndex);
            Constructor.AddPop(lengthField.Type);

            // 复制Data
            Constructor.AddLocal(Method.Params[1].Offset);      // 传入的String
            Constructor.AddLoadT(Method.Params[1].Type);
            Constructor.AddLoadNonStatic(dataField.ConstantPoolIndex);

            Constructor.AddLocal(Method.Params[0].Offset);      // 构造对象
            Constructor.AddLoadT(Method.Params[0].Type);
            Constructor.AddStoreNonStatic(dataField.ConstantPoolIndex);
            Constructor.AddPop(dataField.Type);

            Constructor.AddRet();
        }
Beispiel #2
0
        internal override void MethodGen()
        {
            Constructor.AddLocal(Method.Params[0].Offset);
            Constructor.AddLoadT(Method.Params[0].Type);
            Constructor.AddPushA(Preserved.GetAbsoluteAddress(PreservedAddressTag.STDCHARIO));
            Constructor.AddStoreT(Method.Params[0].Type);

            Constructor.AddRet();
        }