private static List<HardwareRegisterSet> ProcessLoadHardwareRegisterSet()
{
List<HardwareRegisterSet> oReg = new List<HardwareRegisterSet>();
List<HardwareSubRegister> alstSubReg = new List<HardwareSubRegister>();
var aLstPerep = GetBaseAdress(mNameCurrentAdr);
foreach (var perep in aLstPerep)
{
List<HardwareRegister> alstReg = new List<HardwareRegister>();
ulong aBaseAdress = perep.adress;
perep.used = true;
foreach (var reg in adicAdrrOffsetDriv)
{
HardwareRegister Reg = new HardwareRegister();
alstSubReg.Clear();
Reg.Name = reg.Key;
Reg.Address = FormatToHex(reg.Value + aBaseAdress);
Reg.SizeInBits = 32;
foreach (var subReg in adicBitsOffsetDriv)
{
if (subReg.Key.StartsWith(Reg.Name))
{
HardwareSubRegister hsr = new HardwareSubRegister
{
Name = subReg.Key.Remove(0, Reg.Name.Length + 1),
ParentRegister = Reg,
OriginalMacroBase = Reg.Name,
SizeInBits = GetSizeBit(subReg.Value),
FirstBit = GetFirstBit(subReg.Value),
};
if (hsr.SizeInBits == 0)
Console.WriteLine("size subreg 0 " + hsr.Name);
alstSubReg.Add(hsr);
}
}
Reg.SubRegisters = alstSubReg.ToArray();
alstReg.Add(Reg);
}
if (alstReg.Count > 0)
oReg.Add(new HardwareRegisterSet
{
ExpressionPrefix = mNameCurrentAdr,
UserFriendlyName = perep.Name,// astrUserFrendlyName,
Registers = alstReg.ToArray()
});
}
return oReg;
}