[Linux-ug] C Source-File mit gcc compilieren

Ulf Henninger ulf.henninger at nh3consulting.de
Fr Jul 20 11:44:07 CEST 2007


On Friday 20 July 2007 10:10, Bernhard Gustl Bauer wrote:
> Hi,
>
> ich habe ein uraltes C Source-File das vor 12 Jahren unter Borland C
> (DOS) erzeugt wurde. Jetzt muss ich es aufbohren und es läuft nicht mehr
> wegen der 64k Beschränkung bei DOS. Also versuch ich es mit gcc. Jetzt
> kämpfe ich mich durch die zu erwartenden Fehlermeldungen.
>
> Mein aktuelles Problem ist die Funktion _atold(). Unter BC konvertiert
> sie einen String in eine double long Zahl. Gibt es double long bei gcc?
> Ein Konvertierungsfunktion habe ich jedenfalls nicht gefunden. Es gibt
> long long! Ist das vielleicht was ähnliches? Unter BC ist double long
> eine 80 bit Zahl.

Bist du mit dem Datentyp sicher? double long ist mir noch nicht begegnet. 
Meines Wissens produziert _atold() ein long double. long double wird in gcc 
unterstützt, wenn ich nicht irre.

Hierzu:

http://cygwin.com/ml/gdb-patches/2000-q1/msg00473.html

   Support for `long double'
   -------------------------

   The majority of i386 targets in GCC have a `long double' that is
   96 bits wide (of which only 80 bits are used, the rest is padding).
   In fact the only exception is OSF/1, where `long double' is equivalent
   to `double' and has only 64 bits.  This length of 96 bits is also
   used in the debugging information generated by the compiler.

   The origional i386 System V ABI specification doesn't say anything about
   `long double', but the new (draft) IA-64 System V ABI specification
   uses a `long double' of 96 bits for things running in 32-bit mode.
   I guess that 32-bit mode is supposed to be provided for compatible
   with IA-32, this implies that 96 bits is supposed to be the standard.

   Therefore, `config/i386/tm-i386.h' should define:

     #define TARGET_LONG_DOUBLE_FORMAT &floatformat_i387_ext
     #define TARGET_LONG_DOUBLE_BITS 96

   Targets such as OSF/1 can override this.

   If we do the above, we can make the default "virtual" type of the FPU
   registers `builtin_type_long_double'.  A lot of the Linux cruft for
   dealing with `long double' could be removed.

>
> Hilfreich für erste wäre eine Übersicht über die Datentypen und ihre
> Größe. Vielleicht habt ihr ja eine Link für mich. Einen Link auf einen
> Crash-Kurs wäre auch nicht schlecht.
>
> TIA Gustl

-- 
Mit freundlichen Grüßen / Kind regards

Ulf Henninger
nh3 technical consulting

Alter Teichweg 9
22081 Hamburg

Fon +49 40 2000 9581
Fax +49 40 2000 9582
Mail ulf.henninger at nh3consulting.de
Web http://www.nh3consulting.de



Mehr Informationen über die Mailingliste Linux-ug