Compiler mit kleinsten Executables
-
Wenn mans so sieht...aber im Grunde genommen habe ich bei der C++-Version auch nicht mehr gemacht. Habe vieles aus der MSVCRT.dll genommen, hab MFC dynamisch gelinkt, etc - andererseits sind die grundlegenden Dinge noch immer da.
MfG SideWinder
PS: Hello World mit 2Bytes ... kleiner wirds dann wohl keiner mehr schaffen...
-
Na die zwei Bytes würden ja nicht alleine laufen...
Aber die 19 sind echt MEEEGGGAAAA COOOOOOOLLLL
cu,
Lukas
-
Kenn mich da nicht so aus, aber wieso sollten die 2Bytes alleine nicht laufen?
MfG SideWinder
-
Nimm INT 3, das ist nur 1 Byte
(0xCC vs. 0xCD 0xnn)
-
Habe die Aussage:
Da müsste dann ja nur ein Programm vorher ausgeführt werden,
......so interpretiert, dass man damit die 2 Bytes ausgeführt werden können vorher noch ein anderes Programm gestartet werden muss. Das heisst die 2 Bytes wären "alleine" nicht lauffähig, man müsste vorher schon was getan haben, dass aber auch eine bestimmte länge an Code braucht...
Ja, hoffe keinen Denkfehler gemacht zu haben...
cu,
Lukas[ Dieser Beitrag wurde am 12.06.2002 um 21:48 Uhr von Consystor editiert. ]
-
Oje 19 Bytes. Mal gucken ob das Prog noch auf meine 21990232555520 Byte Festplatte draufpasst :p
mfg
PS: 21990232555520 bytes müssten doch rund 20 Gix sein, wenn ich mich nicht verrechnet hab.
-
Original erstellt von Chris++:
**Oje 19 Bytes. Mal gucken ob das Prog noch auf meine 21990232555520 Byte Festplatte draufpasst :p
**Die Kosten für den Verzeichniseintrag sind ja schon größer als der Datei Inhalt (nein, kein amerkanistischer Getrenntschreibfehler, that's Genitiv). Mit ner Clustersize von 16kb auf ner großen FAT-Platte kommste auf ein Schrott-Zu-Nutzdatenverhältnis von 800/1.
-
Ah... und das heißt?
-
das jedes programm immer nur auf der Festplatte in 16 kb schritten gespeichert wird machst du Text Datei mit einem Zeichen -> 16 KB auf Festplatte weg, machst du Textdaei mit 16 KB und 1 Byte -> 32 KB weg usw... ist leider Verwaltungstechnisch nötig sonst würden da diverse Dinge vielzuviele Daten zu verwalten haben
-
Achso. D.H. ich müsste jetzt meine Zahl nochmal durch 16 teilen um an das richtige ergebniss zu kommen.
-
man nehme ein perfektes ffs dateisystem mit selbst festzulegender blockgröße und automatischer defragmentierung durch klasse (net)bsd dateisystemtechnik
-
@Chris++: Nein, eigentlich nicht. Du musst nur damit rechnen, dass eine Datei mit 1kb 16kb belegt. Die Größe herauszufinden ist unter Windows sehr einfach: Datei -> Rechtsklick -> Eigenschaften. Dann steht unter Größe, z.B.:
Größe: 1,50 KB (1.536 Byte), 16.384 Byte belegt
MfG SideWinder
-
Original erstellt von Chris++:
Oje 19 Bytes. Mal gucken ob das Prog noch auf meine 21990232555520 Byte Festplatte draufpasst :pWas, du hast eine 21 Terrabyte Festplatte ?
Vielleicht sollte ich mir auch so eine zulegen. Meine 100GB sind schon fast voll.[ Dieser Beitrag wurde am 13.06.2002 um 21:34 Uhr von DrZoidberg editiert. ]
-
http://www.farb-rausch.com/ -> look out for 16byte!!!! demo [fr-016]
-
jo, und bitte auch mal disassemblieren versteht einer was da genau abgeht?
-
Disassembliert siehts so aus:
:0001.0100 B013 mov al, 13 :0001.0102 CD10 int 10 :0001.0104 C42F les bp, [bx] * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0001.010E(U) | :0001.0106 AA stosb :0001.0107 11F8 adc ax, di :0001.0109 6413066C04 adc ax, fs:[046C] :0001.010E EBF6 jmp 0106
naja... das soll mal einer durchblicken :p
So wie ich das sehe, sind da ziemlich viele Annahmen im Spiel. was ist bx beim start, worauf zeigt ds:si, was ist fs, di und ax? Naja sowas geht auch nur unter DOS.
-
achja, fs:[046C] wird wahrscheinlich auf den bildschirmspeicher zeigen. Der erste int 10 schaltet dann wohl in den grafikmodus um.
Und es ist ne ganz hübsche endlosschleife
-
Also auf Deutsch gesagt, bringt das Programm absolut nichts?
MfG SideWinder
-
Shade Of Mine schrieb:
Kleiner gehts AFAIK nicht mehr.
wenn man dem linker auch ein kleines /align gibt, darf man das /filealign auch runtersetzen.
man kann nen kleineren stub nehmen.
macht zusammen 576 bytes.#pragma comment(linker,"/FILEALIGN:16") #pragma comment(linker,"/ALIGN:16") //#pragma comment(exestr,"<< (c) Volkard Henkel >>") #pragma comment(linker,"/IGNORE:4078") #pragma comment(linker,"/IGNORE:4089") #pragma comment(linker,"/MERGE:.rdata=.text") #pragma comment(linker,"/MERGE:.data=.text") #pragma comment(linker,"/SECTION:.text,ERW") #pragma comment(linker,"/nodefaultlib") #pragma comment(linker,"/incremental:no") #pragma comment(linker,"/entry:crtmain") #pragma comment(linker,"/subsystem:console") //der stub ist von http://its.mine.nu/html/coding/essays/stub.html #pragma comment(linker,"/IGNORE:4060") #pragma comment(linker,"/stub:stub.exe") #pragma optimize("s",on) #include <windows.h> int __stdcall crtmain() { DWORD bytesWritten; WriteFile(GetStdHandle(STD_OUTPUT_HANDLE),"hello, world!",13,&bytesWritten,NULL); return 0; } /* 26.02.2004 03:56 576 test1.exe 1 Datei(en) 576 Bytes */
-
(korbinian: sry! hab ausbersehen hier editiert. mach deinen beotrag bitte wieder rein)