Esempio n. 1
0
void
init (void)
{
  /* Figure out the machine endianness.  */
  determine_endianness ();

  /* Must be first */
  init_variables ();

  init_units ();
  set_fpu ();
  init_compile_options ();

#ifdef DEBUG
  /* Check for special command lines.  */

  if (argc > 1 && strcmp (argv[1], "--help") == 0)
    show_variables ();

  /* if (argc > 1 && strcmp(argv[1], "--resume") == 0) resume();  */
#endif

  if (options.backtrace == 1)
    find_addr2line ();

  random_seed_i4 (NULL, NULL, NULL);
}
Esempio n. 2
0
File: program.c Progetto: jagub2/ak2
int main(int argc, char*argv[]) {
    double start, koniec, krok, wynik;
    unsigned short precyzja, zaokraglenie, fpucw;
    fpucw = 0;
    wynik = 0;
    if(argc < 6) {
        printf("Podaj: wartosc poczatkowa, koncowa, krok, precyzje i tryb zaokraglenia:\n"
                "precyzja:\n"
                "0 - pojedyncza precyzja\n"
                "1 - podwojna precyzja\n"
                "2 - rozszerzona podwojna precyzja (domyslnie)\n"
                "tryb zaokraglenia:\n"
                "0 - zaokraglij do najblizszej (domyslnie)\n"
                "1 - zaokraglij w dol\n"
                "2 - zaokraglij w gore\n"
                "3 - zaokraglij do zera\n");
        scanf("%lf %lf %lf %hu %hu", &start, &koniec, &krok, &precyzja, &zaokraglenie);
    } else {
        sscanf(argv[1], "%lf", &start);
        sscanf(argv[2], "%lf", &koniec);
        sscanf(argv[3], "%lf", &krok);
        sscanf(argv[4], "%hu", &precyzja);
        sscanf(argv[5], "%hu", &zaokraglenie);
    }
    fpucw = get_fpu(); // pobierz stare flagi
    printf("control word:\nbyl: %04x; ", fpucw);
    // wyliczenie odpowiedniej wartosci control word, na podstawie precyzji i zaokraglenia
    if(precyzja > 2) precyzja = 2; // jezeli precyzja > 2, to ustaw domyslna (rozszerzona podwojna)
    if(zaokraglenie > 3) zaokraglenie = 0; // jesli zaokraglenie > 3, to ustaw domyslne (do najblizszej)
    if(precyzja > 0) ++precyzja; // ustaw odpowiednia wartosc dla flagi precyzji (w uzyciu jest 0, 2, 3)
    precyzja <<= 8; // przesun precyzje na odpowiednie miejsce
    zaokraglenie <<= 10; // tak samo tryb zaokraglenia
    fpucw = 0x7f; // ustaw inne flagi (na podstawie wartosci domyslnej)
    fpucw |= precyzja; // dolacz nowe flagi
    fpucw |= zaokraglenie;
    set_fpu(fpucw); // ustaw nowe
    fpucw = get_fpu(); // pobierz nowe
    printf("jest: %04x\n", fpucw);

    wynik = calka(start, koniec, krok); // oblicz calke
    printf("int 1/x dx %lf..%lf = %lf\n", start, koniec, wynik);

    return 0;
}
Esempio n. 3
0
File: fpu.c Progetto: ChaosJohn/gcc
void
set_fpe (int exceptions)
{
  options.fpe = exceptions;
  set_fpu ();
}