public override string PrintRegister(Register register)
{
if (!register.Valid)
return "XXXXXXXXXXXXXXXX";
switch ((X86_Register) register.Index) {
case X86_Register.EFLAGS: {
ArrayList flags = new ArrayList ();
long value = register.Value;
if ((value & (1 << 0)) != 0)
flags.Add ("CF");
if ((value & (1 << 2)) != 0)
flags.Add ("PF");
if ((value & (1 << 4)) != 0)
flags.Add ("AF");
if ((value & (1 << 6)) != 0)
flags.Add ("ZF");
if ((value & (1 << 7)) != 0)
flags.Add ("SF");
if ((value & (1 << 8)) != 0)
flags.Add ("TF");
if ((value & (1 << 9)) != 0)
flags.Add ("IF");
if ((value & (1 << 10)) != 0)
flags.Add ("DF");
if ((value & (1 << 11)) != 0)
flags.Add ("OF");
if ((value & (1 << 14)) != 0)
flags.Add ("NT");
if ((value & (1 << 16)) != 0)
flags.Add ("RF");
if ((value & (1 << 17)) != 0)
flags.Add ("VM");
if ((value & (1 << 18)) != 0)
flags.Add ("AC");
if ((value & (1 << 19)) != 0)
flags.Add ("VIF");
if ((value & (1 << 20)) != 0)
flags.Add ("VIP");
if ((value & (1 << 21)) != 0)
flags.Add ("ID");
string[] fstrings = new string [flags.Count];
flags.CopyTo (fstrings, 0);
return String.Join (" ", fstrings);
}
default:
return String.Format ("{0:x}", register.Value);
}
}