devcpp - hello world 70kb
-
hallo ich benutze devc++. wenn ich da ein einfaches hello world kompiliere ist die exe schon über 70 kb gross. das ist doch nicht normal oder??
gruss
silips: ich bin noob
-
Das ist doch nicht normal oder?
Naja, bei mir ist die HelloWorld.exe unter DevC++ auch 70kb groß.
Btw: Wenn du das ganze unter VisualC++ 6.0 schreibst, dann ist die HelloWorld.exe so ca. 172kb groß.
mfg tHe pHreak
-
gut, dann bin ich wieder beruhigt
aber das ist ja schon sch*****, wenn man da nen kleines proggi schreiben will, dann ist es schon so gross
-
172 kB für ein Hello World???
Sowas kann nur von einem Compiler mit Debug Einstellungen kommen. Alles andere ist doch krank. Mit ASM krieg ich das unter 0,5Kb.mfg
n00b
-
ASM??
-
Original erstellt von Sili:
ASM??Er meint, in purem Assembler geschrieben...
z.B. so:
[ORG 100h] ;declaration section jmp start ;begin with start msg db "Hello World!",0h ;output message len equ $ - msg ;Length of message msdos equ 21h ;MSDOS irq fwrite equ 40h ;write to file with handle exit equ 4c00h ;msdos exit start: nop ;herewego mov dx,msg ;get the output mov cx,len ;len chars mov bx,1 ;filehandle 1=CON: mov ah,fwrite ;get function int msdos ;write it out xor eax,eax ;clean out eax mov ax,exit ;MS-DOS successful exit int msdos ;back to the operating system
Das daraus resulteierende DOS-Programm "hello.exe" ist nur 38 Bytes groß.
-
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