[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: e-mail verpasst wegen github



Hallo -

 Hoppla....


Matthias Böttcher schrieb:
Am 20. Februar 2012 14:47 schrieb SchmiTTT <cv.schmitt@googlemail.com>:


Stimmt nicht ganz, dass der Code "garnichts" macht.
Gucke genau hin. Jede einzelne Adresse im RAM-Speicher wird auf den boolean
- Wert TRUE gesetzt.
Nachdem der RAM-Speicher dann mit TRUE aufgefuellt ist, wird ein chip-Reset
gemacht mit dem bios-chip.
(der RAM-Speicher wird losgelassen.)
Hallo SchmiTTT,

ich habe mir mal die Mühe und den Spaß gemacht, mir den von Dir
geschrieben C-Code anzusehen, der hier
    http://lists.debian.org/debian-mentors/2012/02/msg00453.html
veröffentlicht wurde.
.
Er macht effektiv: NICHTS.
Nicht mal ein memory leak ist drin. Wirklich nur: nichts.

Ich habe den Verdacht, dass Du nicht weißt, was Du da programmiert
hast und dass Du nicht weißt, was Du mit dem Compiler tust.

Also los:

#include <stdio.h>
#include <stdbool.h>
#include <math.h>
#include <stdlib.h>
#include <signal.h>

Hier hast Du was ganz wesentliches dieser Funktion vergessen...

Bitte die Latte auskommentierter include's  nicht einfach unterschlagen. Die füllen nämlich den Code beträchtlich. Ohne Leerläufe bliebe nur ein trauriges Gerippe von:

1. 5 include's

2. Dekleratioen von:
1 int; 4 usint;. 2 lusint

3. 3 statischen Ausgaben

4. einer Leerlaufschleife

übrig.


      
int main( int argc, char *argv[] ) {

 int cp;
 unsigned int bios;
 unsigned int BIOS;
 unsigned int Bios;
 unsigned int reset;
 long unsigned int mx;
 long unsigned int *px,**ppx;
Hier werden ein paar Variablen vom Typ int, unsigned int, Zeiger auf
einen int und Zeiger auf einen Zeiger auf einen int deklariert.

printf("\n ... Attributes :        Adresses:        hex-Code:       pointers:              hex-Code:       pointers to pointers:   hex-Code: \n");
printf("_____________________________________________________________________________________________________________________________________");
Eine statische Ausgabe auf stdout.

for ( mx = true; mx <= 4194304; mx++ )
Hier wird eine Schleife aufgebaut, die von mx = 1 (laut stdbool.h ist
true==1) bis 4194304 durchlaufen wird, also 4194304 mal, da mx im
Schleifenrumpf nichts zugewiesen wird und nur durch den unären
increment Operator ++ jeweils um 1 erhöht wird.

 {
   cp=false;
Der int-Variable cp wird der Wert 0 (laut stdbool.h ist false==0) zugewiesen

   px = &mx;
Die Variable px (Typ: Zeiger auf einen int) erhält als Wert die Adresse von mx

   ppx = & px;
Die Variable ppx (Typ: Zeiger auf einen Zeiger auf einen int) erhält
als Wert die Adresse von px

   printf("\n ... Addresses are here ... \t %lu \%16lX \t %lu \t %16lX \t %lu \t %16lX ", mx, mx, (unsigned long)&px[mx], (unsigned long)&px[mx], (unsigned long)&ppx[mx], (unsigned long)&ppx[mx] );
   printf("\n  ... now them resetted ... \t %lu \%16lX \t %lu \t %16lX \t %lu \t %16lX ", mx, mx, (unsigned long)&px[mx], (unsigned long)&px[mx], (unsigned long)&ppx[mx], (unsigned long)&ppx[mx] );
Wieder irgendeine Ausgabe auf stdout - sonst nichts. Nicht mal eine
Zuweisung innerhalb der Argumente von printf()

 }

      
 bios=true;
 BIOS=true;
 Bios=true;
 reset=true;
Den Variablen bios, BIOS, Bios und reset (alle vom Typ unsigned int)
wird der Wert 1 zugewiesen.
Mit diesen Variablen wird im ganzen Programm nichts gemacht, d.h. ihr
Inhalt wird nie verwendet.

cp=false;
Der Variablen cp (Typ int) wird der Wert 0 zugewiesen.
Auch mit dieser Variablen wird im ganzen Programm nichts gemacht, d.h.
ihr Inhalt wird nie verwendet.

   printf("\n\n\n\t\t\t\t\t ... dunno !!! \n\n\n\n\n\n");
Eine statische Ausgabe auf stdout.

 return (0);
}
Das war's.

Dein Programm erzeugt 8388611 ( 2 + 2*4194304 + 1) Zeilen Ausgabe auf
stdout, sonst nichts.

Es wird nie in den Speicher geschrieben, außer in die von Dir
deklarierten Variablen.
Es wird den Zeigervariablen im Schleifenrumpf jeweils ein Wert
zugewiesen, so dass jeweils eine andere Zeile mit printf() erzeugt
wird.
Und es wird nach der Schleife den int-Variablen einmalig ein Wert
zugweisen, der nie benutzt wird, so dass der Compiler das
wahrscheinlich schon wegoptimiert.

Schade um deine Mühe!

Matthias


Ja- wenn ich meine Displays so Volltexten würde, wären die User hell begeistert.... :-P
Da müsste für die Bedienung vor den Anlagen wirklich nicht viel gelesen werden

---------------------------------
Salvalaggio Marino

Reply to: