Пример #1
0
status_t
Architecture::InitRegisterRules(CfaContext& context) const
{
    // Init the initial register rules. The DWARF 3 specs on the
    // matter: "The default rule for all columns before
    // interpretation of the initial instructions is the undefined
    // rule. However, an ABI authoring body or a compilation system
    // authoring body may specify an alternate default value for any
    // or all columns."
    // GCC's assumes the "same value" rule for all callee preserved
    // registers. We set them respectively.
    // the stack pointer is initialized to
    // CFA offset 0 by default.
    const Register* registers = Registers();
    RegisterMap* toDwarf = NULL;
    status_t result = GetDwarfRegisterMaps(&toDwarf, NULL);
    if (result != B_OK)
        return result;

    BReference<RegisterMap> toDwarfMapReference(toDwarf, true);
    for (int32 i = 0; i < CountRegisters(); i++) {
        int32 dwarfReg = toDwarf->MapRegisterIndex(i);
        if (dwarfReg < 0 || dwarfReg > CountRegisters() - 1)
            continue;

        // TODO: on CPUs that have a return address register
        // a default rule should be set up to use that to
        // extract the instruction pointer
        switch (registers[i].Type()) {
        case REGISTER_TYPE_STACK_POINTER:
        {
            context.RegisterRule(dwarfReg)->SetToValueOffset(0);
            break;
        }
        default:
        {
            context.RegisterRule(dwarfReg)->SetToSameValue();
            break;
        }
        }
    }

    return result;
}
Пример #2
0
//------------------------------------------------------------------------------
void ClimateFile::LoadClimateInformation()
{
AnsiString nombre = AnsiString(FileName);
int posicion=nombre.Pos(".");
int longitud=nombre.Length();
int caract=longitud-posicion;
AnsiString ext=nombre.SubString(posicion+1,caract);
if(ext=="prn")
{
  RecNum=CountRegisters(FileName);
  GetColumnData(FileName , TitTMin , MinTemp  );
  GetColumnData(FileName , TitTMax , MaxTemp  );
  GetColumnData(FileName , TitPrec , Precipit );
  GetColumnData(FileName , TitRad  , Radiation);
  GetColumnData(FileName , TitET  , ET);
  GetColumnData(FileName , TitIrri  , Irri);
  GetColumnData(FileName , TitSoilTemp  , SoilTemp);
  GetColumnData(FileName , TitSunshine  , Sunshine);
  GetColumnData(FileName , TitDay  , Day);
  GetColumnData(FileName , TitMonth  , Month);
  GetColumnData(FileName , TitYear  , Year);
  GetColumnData(FileName , TitObs  , Obs);
  GetColumnData(FileName , TitObsCC  , ObsCC);
}
if(ext=="csv")
{
  RecNum=CountRegistersFromCSVFile(FileName);
  GetColumnDataFromCSVFile(FileName , TitTMin , MinTemp  );
  GetColumnDataFromCSVFile(FileName , TitTMax , MaxTemp  );
  GetColumnDataFromCSVFile(FileName , TitPrec , Precipit );
  GetColumnDataFromCSVFile(FileName , TitRad  , Radiation);
  GetColumnDataFromCSVFile(FileName , TitET  , ET);
  GetColumnDataFromCSVFile(FileName , TitIrri  , Irri);
  GetColumnDataFromCSVFile(FileName , TitSoilTemp  , SoilTemp);
  GetColumnDataFromCSVFile(FileName , TitSunshine  , Sunshine);
  GetColumnDataFromCSVFile(FileName , TitDay  , Day);
  GetColumnDataFromCSVFile(FileName , TitMonth  , Month);
  GetColumnDataFromCSVFile(FileName , TitYear  , Year);
  GetColumnDataFromCSVFile(FileName , TitObs  , Obs);
  GetColumnDataFromCSVFile(FileName , TitObsCC  , ObsCC);
}
}