示例#1
0
文件: Cast.cs 项目: 7shi/LLPML
 public override Addr32 GetAddress(OpModule codes)
 {
     if (Source is Var)
         return (Source as Var).GetAddress(codes);
     else if (Source is IntValue)
         codes.Add(I386.MovR(Var.DestRegister,
             Val32.NewI((Source as IntValue).Value)));
     else if (Source is StringValue)
         codes.Add(I386.MovR(Var.DestRegister,
             codes.GetString((Source as StringValue).Value)));
     else
     {
         Source.AddCodesV(codes, "mov", null);
         return null;
     }
     return Addr32.New(Var.DestRegister);
 }
示例#2
0
文件: StringValue.cs 项目: 7shi/LLPML
 public override void AddCodesV(OpModule codes, string op, Addr32 dest)
 {
     codes.AddCodesV(op, dest, codes.GetString(Value));
 }