devcpp - hello world 70kb
-
a so
hmm, der code is länger als in cpp, aber die exe ist trotzdem kleiner ??? naja
-
Assembler ist fast Maschinencode.
Ein Prozessor hat für jede Operation die er ausführen kann eine Zahl reserviert.
Assembler tut nichts anderes, als die Worte durch die jeweiligen Zahlen zu ersetzenUm einen wert in ein Rechenregister zu schieben braucht man 4 Byte, ein nop (tu' nichts) hat sogar nur eins.
Das macht den ganzen assemblierten Code sehr klein.allerdings ist das Ergebnis keine exe, sondern eine .com - datei. Der Dateiheader von .exe ist nämlich selber schon 28 Byte (?) groß. Hinzu kommen bei VC++ noch 'nützliche' Informationen wie
'Erstellt mir Visual Studio' und Debug - Info's zum Fehlerfinden...cYa
DjR
-
mach ma "strip test.exe" damit machste die exe nackig
-
hä??
-
Das Programm "strip" entfernt die Debug-Informationen aus der Exe. Es kann aber schon sein, das garkeine mehr in der EXE vorhanden sind.
-
Wenn du die Exe in VC++ im Releasemodus kompilierst, hat sie nur 24 KB. Du kompilierst im Debug, das ist klar, daß die Exe größa is
-
Ich komme mit g++ aus MinGW nichtmal auf 70 kB. Wenn ich ohne irgendwelche Optionen kompiliere, dann lande ich bei 448.537 Byte. Wenn ich mit
g++ -O3 -s -o Hello.exe Hello.cpp
kompiliere, dann lande ich immernoch bei 210.944 Byte.
Wie kriegt man das kleiner?
...ein Java-Hello-World braucht übrigens 336 Byte. ...auch noch ziemlich viel, wenn man es mit dem Assembler-Programm vergleicht.
-
mit der version 3.2 kriegste die exe natürlich nicht mehr so klein
-
moin meister...
und genau das ist mein Problem auch ...
gcc 3.2 ist aus dieser Sicht her völliger mist ...
ich verwende wieder 2.9.x und benüge mich mit 4 Kb
mfg
RB
-
lol sehr sinnvoll. ist ja unheimlich schlimm wenn das programm soooooooo groß ist