C-Compiler in 512 Byte

#7422241
Lesenswert?

Herbert B. schrieb:

Na C ist das aber nicht, eher ein Mini-Subset.

Ja, das ist so. Ich frage mich, warum. Die Begrenzung auf 512Byte MBR ist doch nicht mehr zeitgemäß. Heute legt doch praktisch alles Partitionen auf 1MiB-Grenzen. D.h.: vor der ersten Partition ist 1MiB Luft (der MBR ist nur der erste Sektor dieses Bereichs).

Und in 1MiB könnte man sehr wohl einen vollständigen C-Compiler für eine Zielarchitektur unterbringen.

Bleibt dann am Ende nur die Frage: wozu, zum Teufel, sollte man zur Bootzeit einen C-Compiler benötigen?

#7422345
Lesenswert?

Εrnst B. schrieb:

Trotzdem eine schöne Assembler-Übung.

Na, ich weiß nicht...

Zumindest könnte ich mir viele andere Sachen als Asm-Übung vorstellen, die tatsächlich irgendeinen "Nutzeffekt" haben. Sowas in der Art, wie es die Demo-Szene produziert. Ist natürlich auch nur Spielerei, aber wenigstens eine, die tatsächlich etwas Eindrucksvolles produzieren kann.

Aus dem Bootsektor heraus mehrere CPU-Cores, Sound und (3D-)Grafik in Betrieb zu nehmen und dann trotzdem beim Verlassen des Bootcodes einen normalen Bootvorgang vollziehen zu können, DAS wäre eine angemessene Übung für den sinnvollen Einsatz von Asm.

bis auf die Sprache, die er damit übersetzt.

Ja, ich hätte die Frage auch provokanter formulieren können:

Wozu, zum Teufel, sollte man überhaupt einen C-Compiler benötigen, wenn man Asm kann (und nicht faul oder gierig ist)?

#7422375
Lesenswert?

C-hater schrieb:

Wozu, zum Teufel, sollte man überhaupt einen C-Compiler benötigen, wenn man Asm kann (und nicht faul oder gierig ist)?

Tja, erbärmlich dokumentiert, teilweise dokumentiert, gar nicht dokumentiert.. Ansonsten mal K+R lesen, die schreiben nämlich recht gut, warum überhaut C. Hauptsache wohl, wegen Hardwarewechseldich/Betriebssystem - aber womöglich auch aus reinem technischem Interesse. Die Beliebtheit von C, und auch die Schnelligkeit und die Standards + hier und da sehr nette Bibliotheken im Beipack sprechen gewisse Bände.

Und in Asm freut man sich doch auch, wenn man nicht jeden Pieps, sowas wie printf() oder unendlich lange Zahlenausgabe bei jeder wechselnden Hardware jedesmal neu programmieren muss. Außerdem leben Turnschuh-Netzwerke auch vom Austausch - und wenn der auf Basic oder auf C basiert, dann kann man ja, wenn man gut ist und Langeweile hat, immer zurück nach Asm übersetzen. Würden das mehr Leute machen, gäbe es (begrüßenswerterweise) mehr Austausch in Asm. Machen aber nicht so viele, und so bleibt die Basis dürftig. Und so unglücklich muss man darüber auch nicht sein - letztlich ist know how ja auch keine schlechte Sache - und wer meint, ständig in Fettnäppchen treten zu müssen: bitte schön. Und wer ist da schon perfekt? 100% - Erwartung ist sowieso oft eher krank als erfreulich.

#7422956
Lesenswert?

Ben B. schrieb:

Du meinst einen Assembler.

hätte man sogar in 256 Bytes untergebracht! Das will ich sehen.

Nein, ich meinte einen ASM-Compiler, also einen Übersetzer von Binärcode in genau denselben Binärcode.

Einen Assembler-Disassembler habe ich vor langer Zeit zusammen mit einem Mitschüler für den Commodore PET 2001 (in 6502 Assembler) geschrieben. Wir sind damit bei Jugend Forscht angetreten. Leider konnten die Juroren mit unserer genialen Arbeit damals so gar nichts anfangen ...

LG, Sebastian

(Firma: Funkenflug Industries) #7422990
Lesenswert?

Nein, ich meinte einen ASM-Compiler, also einen Übersetzer von Binärcode in genau denselben Binärcode.

Ein ASM-Kopierer?

Meine letzten DOS-Testviren besaßen sowas wie einen minimalen Assembler, der konnte nichts weiter als die Entschlüsselungsroutine polymorph darstellen, war aber soweit ich mich erinnere größer als 256 Bytes Code. Also das war keine echte Verschlüsselung wie man sie heute verstehen würde (der Schlüssel lag ja zwangsweise offen im Code), aber eine bequeme Möglichkeit, den Hauptteil des Virencodes vor allen Zeichenketten-basierten Scannern zu verstecken.

#7423016
Lesenswert?

Rbx schrieb:

höchstwahrscheinlich war die Doku schlecht, was ;)

Die Doku war höchst ausführlich und aktuell der Ausdruck des Quellcodes unseres Assemblers/Disassemblers. Sogar mit Kommentaren! Und natürlich konnte unser Assembler sich selbst assemblieren. Nur konnte im Jahre 1978 keiner der Juroren 6502-Mnemonic lesen (oder, was das betrifft, irgendeine Programmiersprache) ... :(

LG, Sebastian

#7423029
Lesenswert?

Sebastian W. schrieb:

Nur konnte im Jahre 1978 keiner der Juroren 6502-Mnemonic lesen (oder, was das betrifft, irgendeine Programmiersprache) ... :(

Ich habe mal nachgeschaut, ob es noch was gibt zu 1978, gefunden: www.wissensschule.de/vom-bundessieger-zum-renommierten-stammzellenforscher/#:~:text=Jürgen%20Hescheler%20(56)%2C%201978,Neurophysiologie%20der%20Universitätskliniken%20zu%20Köln

Allerdings waren schon die 50er und 60er Computercracktime, sonst hätte es ja kaum Basic gegeben oder diverses Algo-Know-How. Bei Jugend Forscht braucht es noch die wissenschaftliche Note, wo war denn die? Wenn dahinter nur Proof of Concept steht, dann ist das noch keine Wissenschaft, höchstens so eine Art Hacker-Sport. Von der Jurorenseite kann man aber auch von Missverständnissen ausgehen. Hatte ich nämlich bei einem Mathelehrer auch mal. Der hatte eine ziemliche Vereinfachung eines (seines) Basic-Programms nicht verstanden, und meinte, ich hätte die Hausaufgaben nicht gemacht.

Und: ein gewisses Logik-Genie hatte auch schon mal Ärger, und wurde dann hochnäsig von der etablierten Fachwelt "blöde Ziege" genannt - obwohl die aufgrund ihrer Schlauheit doch recht hatte.

#7423139
Lesenswert?

Rolf M. schrieb:

Sebastian W. schrieb:

Nein, ich meinte einen ASM-Compiler, also einen Übersetzer von Binärcode in genau denselben Binärcode.

Was ich mir darunter vorstellen soll, ist mir nicht klar. Was genau macht dieser Übersetzer denn und wozu braucht man ihn, wenn der Output exakt gleich dem Input ist? Und was hat das mit Assembler oder Compilern zu tun?

Heut nennt man das Programm copy, oder cp, ...

#7423531
Lesenswert?

Rolf M. schrieb:

Sebastian W. schrieb:

Nein, ich meinte einen ASM-Compiler, also einen Übersetzer von Binärcode in genau denselben Binärcode.

Was ich mir darunter vorstellen soll, ist mir nicht klar. Was genau macht dieser Übersetzer denn und wozu braucht man ihn, wenn der Output exakt gleich dem Input ist? Und was hat das mit Assembler oder Compilern zu tun?

Vermutlich geht es ums sogenannte Bootstrapping. Als erstes macht man einen Compiler der sich selbst Kompilieren kann. Der Binärcode muss da zwar nicht zwangsläufig der selbe raus kommen, ist sogar recht unüblich. Aber angenommen er meint das ASM und nicht den Binärcode, dann macht das ganze mehr Sinn.

https://en.wikipedia.org/wiki/Bootstrapping_(compilers)

#7423544
Lesenswert?

Sebastian W. schrieb:

Nur konnte im Jahre 1978 keiner der Juroren

Meine Urkunde von damals sagt es war 1980, Bremen, Mathe/Informatik, 3. Platz.

Rolf M. schrieb:

was hat das mit Assembler oder Compilern zu tun?

Gar nichts. c-hater meinte oben, ein C-Compiler sei unsinnig weil C unsinnig sei, worauf ich schrub, ein ASM-Compiler sei zudem sogar noch viel kleiner als ein C-Compiler (weil ein ASM-"Compiler" ja eben genau gar nichts tut). Ja, irgendwie ein blöder Witz, ich sehs ja ein ...

LG, Sebastian

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren