Wie kann ich ein Programm schreiben das nicht größer als 500 Byte ist ?
-
Ich arbeite mit Dev C++ und möchte wissen wie ich ein Programm mit Maximal 500 Byte Größe schreiben kann ! Brauche ich dazu eine andere Entwicklungsumgebung ? Muss ich etwas im Debugger einstellen ?
Mfg UltraWinzig
Thx für Antworten
-
Assembler?
-
bitte was ?
-
Er meint wohl, dass du dein Programm in Assembler (eine Sprache) schreiben solltest. Wie und ob du in DevC++ einen Assembler einrichten kannst, weiss ich aber auch nicht.
Im Zweifelsfall benutzt du fuer dieses Unterfangen eben mal ausnahmsweise nicht DevC++, sondern installierst dir einen Assembler (zB. NASM), schreibst die Quellcodes mit deinem Lieblingseditor (Notepad tuts auch) und assemblierst, bzw. linkst ueber die Konsole, bzw. mit batch-Dateien.
-
UltraWinzig schrieb:
bitte was ?
Mit einer C/C++ Umgebung wirst du das nicht hinbekommen. Zumal ich eher annehme das du deine Anforderungen etwas höher schrauben solltest. Mit 500 Byte lässt sich übernhaupt nichts anfangen (Allerhöchstens auf Ebene von Maschinencode/Assembler - Zur Erklärung: Assembler ist eine Sprache die im wesentlichen ein 1:1 Abbild im Maschinencode, nur Menschenlesbarer, ist).
Selbst wenn man einige Kompromisse eingeht:
a) Eingestellte Größenoptimierung
b) Ausstellen von Features wie Exceptionhandling/RTTI
c) Dynamisches Linken der Laufzeitumgebung (wobei die Frage ist, ob diese nach deiner Vorgabe nicht dennoch dazu gehört)
d) Verzicht auf jegliche C++ Bibliotheken (nur C-Bibliotheken verwenden)Erreicht ein Programm auf dem hier vorliegenden Compiler 7kb (Soviel ich mich erinnere hat dies unter einer MSVC-Version wo ich dies mal ausprobiert habe auch noch 2-3kb erfordert).
cu André
-
also von Assembler habe ich noch nie etwas gehört. Aber ich werde mich mal dannach umsehen , und diese Methode da ausprobeiren. Aber wie wird das Programm dadurch kleiner ?
-
UltraWinzig schrieb:
also von Assembler habe ich noch nie etwas gehört. Aber ich werde mich mal dannach umsehen , und diese Methode da ausprobeiren. Aber wie wird das Programm dadurch kleiner ?
C/C++ erzeugt einen gewissen "Overhead" (Anweisungen wie das Programm und die Laufzeitumgebung zu laden sind...). In Assembler ist dieser Overhead kaum gegeben, da du alles bis ins kleinste Detail steuern kannst. Ich bezweifel dennoch das du etwas im 500 Byte Bereich erzeugen kannst, das die Bezeichnung "Programm" wirklich verdient (Viel mehr als ein Hallo Welt wird dies nicht sein).
Normalerweise lästern C/C++-Programmierer über Basic/Java und Co, wegen den vielen "Overhead". In Assembler musst du noch weit mehr "tippen"...
Einzelne Befehle in Assembler kannst du dir etwa so vorstellen:
Lade Wert aus Speicherzelle xyz in das Register abc;
Lade Wert aus Speicherzelle zyx in das Register cba;
Addiere beide Werte;
...Meine Assemblerkenntnisse sind aber schon etwas eingestaubt, nur brauchst du in der Regel für etwas das in C++ locker in eine Zeile passt in Assembler in der Regel mehrere Zeilen (Bei Bibliotheksfunktionen überspitzt: vielleicht auch kleine Romane).
cu André
-
also , ein Hello World Programm hat 75 Byte. Aber was ich brauche ist ein simpler kopierbefehl - einer der eine Datei in ein vorbestimmtes Verzeichnis kopiert. Und befor ich jetzt eine ganze Programiersprache lerne wollt ich dann mal genauer fragen. Ein simpler kopierbefehl der eine Datei kopiert.
-
UltraWinzig schrieb:
also , ein Hello World Programm hat 75 Byte.
In Was? In ASCII-Text, oder als Exe?
UltraWinzig schrieb:
Aber was ich brauche ist ein simpler kopierbefehl - einer der eine Datei in ein vorbestimmtes Verzeichnis kopiert. Und befor ich jetzt eine ganze Programiersprache lerne wollt ich dann mal genauer fragen. Ein simpler kopierbefehl der eine Datei kopiert.
Simpler Kopierbefehl... Nimm mal diesen simplen Kopierbefehl in seine Einzelteile auseinander, und dann überleg dir mal ob der wirklich so simpel ist... Das dürfte in Assembler schon ein eigenes kleines Projekt sein
P.S: Vielleicht solltest du dir wirklich mal Assembler grundlegend anschauen, und nur um zu verstehen wie Computer intern arbeiten...
-
UltraWinzig schrieb:
also , ein Hello World Programm hat 75 Byte. Aber was ich brauche ist ein simpler kopierbefehl - einer der eine Datei in ein vorbestimmtes Verzeichnis kopiert. Und befor ich jetzt eine ganze Programiersprache lerne wollt ich dann mal genauer fragen. Ein simpler kopierbefehl der eine Datei kopiert.
Jo, da kann man ein Programm schreiben, das die Dateinamenserweiterung .bat trägt, und nur aus ein paar Byte besteht.
-
kleiner 500 Byte?
Soll das in den Bootsektor?In grauer Vorzeit konnte man mit INTxx kopieren.
Wie das heute geht?MfG f.-th.
-
[quote="Belli"
Jo, da kann man ein Programm schreiben, das die Dateinamenserweiterung .bat trägt, und nur aus ein paar Byte besteht.[/quote]
Hey stimmt. Ein Batch Programm schreiben. Danke für die Idee. War sehr nützlich. 25 Byte - super
-
demo coder befassen sich mit solchen Fragen: Programme, meistens Grafik- und Sound-Demos aus max. 64, 128, 256, 4096 oder 65536 Bytes, es gibt sogar Wettbewerbe (compos).
-
asc schrieb:
Simpler Kopierbefehl... Nimm mal diesen simplen Kopierbefehl in seine Einzelteile auseinander, und dann überleg dir mal ob der wirklich so simpel ist... Das dürfte in Assembler schon ein eigenes kleines Projekt sein
Kommt natuerlich darauf an, was du unter "eigenes kleines Projekt" verstehst, aber in Win32 ist das mit einem einzigen API-Befehl gegessen. Schreibselt man das mit etwas wie diesen unsaeglichen MASM-Macros (invoke), passt das sogar in eine Zeile und sieht aus wie eine Art vermurxtes Basic.
-
500 Bytes dürften zu wenig sein, aber z.B. folgendes ginge:
http://www.int21.de/linux4k/Simpler Kopierbefehl... Nimm mal diesen simplen Kopierbefehl in seine Einzelteile auseinander, und dann überleg dir mal ob der wirklich so simpel ist... Das dürfte in Assembler schon ein eigenes kleines Projekt sein
Aber ein sehr kleines. Man braucht nur Dateizugriff und getc() und putc(), die beiden reichen auch ungepuffert, also selbstgebaut.
-
asc schrieb:
Ich bezweifel dennoch das du etwas im 500 Byte Bereich erzeugen kannst, das die Bezeichnung "Programm" wirklich verdient (Viel mehr als ein Hallo Welt wird dies nicht sein).
wenn du wüsstest ... http://www.pouet.net/prodlist.php?type[]=256b
-
UltraWinzig schrieb:
Belli schrieb:
Jo, da kann man ein Programm schreiben, das die Dateinamenserweiterung .bat trägt, und nur aus ein paar Byte besteht.
Hey stimmt. Ein Batch Programm schreiben. Danke für die Idee. War sehr nützlich. 25 Byte - super
wie dämlich
-
lol Der gewünschte schrieb:
UltraWinzig schrieb:
Belli schrieb:
Jo, da kann man ein Programm schreiben, das die Dateinamenserweiterung .bat trägt, und nur aus ein paar Byte besteht.
Hey stimmt. Ein Batch Programm schreiben. Danke für die Idee. War sehr nützlich. 25 Byte - super
wie dämlich
Was is daran Dämlich ?