Shorty93:

Deine code

while (1)
return 0;

meint etwas wie: "fur immer blasse deine letzte atem aus". Aber das ist unmöglich.

Das sollte sein:

while(1);
return 0;

Weil das ist gleich wie: "tu immer nichts, aber danach blasse deine letzte atem aus". Das hört kommisch an, aber stimmt doch fur Asuro. Weil er immer in der while schleife bleidt, und deshalb immortal (ist das auch einer deutscher wort??) ist. Dammit endet main() nie.

Wenn den cpu doch bei "return 0" angekommen ist geht er einfach weiter weil Main das hauptprogram ist. Normale funktionen geben hier ein wert zuruck zum hauptprogram, oder zu einem funktion der sie angerufen hat. Und den cpu geht weiter in dem code der ihn angerufen had. Aber das kann nicht mit Main, weil es ein Uber-uber-uber-(Gott)-funktion is. Den instruktionszahler geht einfach weiter und arbeitet den 'instruktion' im nachsten programspeicherplatz. Deshalb hast du gesehen deine Asuro spielt alte programmen ab. Den sind noch drin und nicht uberschrieben beim flaschen. Wenn du ein grosses program geflashet hattet wurde er danach in verbotenes code gehen (wie den bootloader der am ende sitzt, wen ich mich nicht irre) oder den instruktionszahler geht durch den maximum wert und startet wieder am anfang bei 0. Aber das ist auch nicht erlaubt. Deshalb muss er immer den selbe gedanke machen.

Ich hoffe diesen analogie hat das ein bisschen erklärt.