>From rumstich Thu Nov 26 12:12:15 1998 From: Jens-Uwe Rumstich Subject: erste Analyse SPLIB Hi! Hier sind die Ergebnisse meiner ersten Analyse der SPLIB-files. SPLIB sind hauptsaechlich allgemeine Hilfsroutienen. dlg_tpl.cpp: -grundlegende Dialoge., Template Dialoge. l_layer.cpp - Setzen Default-werte. - ermitteln Statusinfos - Ausgabe Autoreninformationen (Adresse, Name usw) - Filehandling (open/clos usw) - Warteschleife (delay). m_dlg.cpp - Dialoge fuer Motorenansteuerung. - Setzen der eingegebenen Werte in die entsprechenden Datenstrukturen. Bewertung Programmstil: - die Dialoge sind C++, der Rest sieht nach C aus. - Kommentare gibt es nur SEHR wenige, meist nur eine Zeile kurzbeschreibung pro C-file. - es werden in grossem Masse GOTOs verwendet. PROBLEM: Die Warteschleife in l_layer.cpp sieht folgendermassen aus: void WINAPI _export Delay(long count) { // Diese Funktion keinesfalls verändern long d1, corr=920, m=0; if(count == 0) return; if(count>0) count--; for(d1=0;d1<(count*11+corr);d1++) m=m+1; }; Es wird also ausdruecklich davor gewarnt, diese Funktion zu aendern, um das exakte Timing zu gewaehrleisten. Die Zeit, die das programm in dieser Warteschleife verbringt, ist jedoch abhaengig von der Geschwindigkeit der CPU und der Qualitaet des Compilers (gute Compiler koennten erkennen, dass die Schleife eigentlich nichts macht und sie ganz rauswerfen). Diese Funktion wird scheinbar recht haeufig aufgerufen ("grep Delay *.c*") und koennte fuer Fehler durch falschen Timing verantwortlich sein.. ---- Ich haette noch eine Frage an die Leute, die sich mit Borland auskennen. Sind Dinge wie "NEAR" und "FAR" heute noch noetig? Diese wurden IMHO nur eingefuehrt, um die durch 16bit-Adressierung entstandenen Probleme (nur 64K pro Segment ansprechbar) zu loesen. Der derzeit aktuelle Compiler muesste doch (13 Jahre nach der Vorstellung des 386ers) 32bit Code erzeugen koennen, oder? Durch permanentes Weglassen dieser Konstrukte waere die spaetere Portierung auf andere Compiler deutlich einfacher. Jens-Uwe Rumstich