Forum: PC-Programmierung C-Compiler in 512 Byte


von Εrnst B. (ernst)


Lesenswert?

Was schönes zum Lesen über's verlängerte Wochenende:

https://xorvoid.com/sectorc.html

https://heise.de/-9067663

von Herbert B. (Gast)


Lesenswert?

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

Immer diese Übertreibungen.

von C-hater (c-hater)


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?

von Εrnst B. (ernst)


Lesenswert?

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

Schreibt er ja am Ende: Garnicht.

Trotzdem eine schöne Assembler-Übung. Sollte dir doch eigentlich 
besonders gefallen, bis auf die Sprache, die er damit übersetzt.

von C-hater (c-hater)


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)?

von 🍅🍅 🍅. (tomate)


Lesenswert?

MBR ist sowas von gestern, interessanter/relavanter ist was heute in 
L1/L2 Cache passt

von Rbx (rcx)


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.

von (prx) A. K. (prx)


Lesenswert?

Rote T. schrieb:
> MBR ist sowas von gestern, interessanter/relavanter ist was heute in
> L1/L2 Cache passt

Musst nur zurück auf K&R-C. Die PDP-11 hatte einen Adressraum von 64 KB 
und deren C Compiler passte hinein. AMDs K7/K8-Varianten hatten 
L1-Caches von 64+64kB und die E-Cores von aktuellen Intels haben 
ebenfalls 64KB I-Cache.

: Bearbeitet durch User
von Sebastian W. (wangnick)


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)?

Dazu kommt: Einen ASM-Compiler hätte man sogar in 256 Bytes 
untergebracht!

LG, Sebastian

von Rolf M. (rmagnus)


Lesenswert?

Sebastian W. schrieb:
> Dazu kommt: Einen ASM-Compiler

Du meinst einen Assembler.

> hätte man sogar in 256 Bytes untergebracht!

Den Platz würden schon alleine die Namen der ganzen Instruktionen 
verbrauchen.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

> Du meinst einen Assembler.
>> hätte man sogar in 256 Bytes untergebracht!
Das will ich sehen.

von Sebastian W. (wangnick)


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

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


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.

von Rbx (rcx)


Lesenswert?

Sebastian W. schrieb:
> Wir sind damit bei Jugend Forscht angetreten. Leider konnten die Juroren
> mit unserer genialen Arbeit damals so gar nichts anfangen

Was habt ihr den genau erforscht, und welche Konkurrenz hat warum 
gewonnen?
(höchstwahrscheinlich war die Doku schlecht, was ;) )

von Sebastian W. (wangnick)


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

: Bearbeitet durch User
von Rbx (rcx)


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-stammzellenforsch 
er/#:~:text=Jürgen%20Hescheler%20(56)%2C%201978,Neurophysiologie%20der%2 
0Universitä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.

: Bearbeitet durch User
von Rolf M. (rmagnus)


Lesenswert?

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?

von (prx) A. K. (prx)


Lesenswert?

Vielleicht etwas in der Art, wie ich es für Intels Objektcode-Format mal 
baute. Einen Decoder zu Textdarstellung, und einen Encoder, die diese 
Textdarstellung wieder ins binäre brachte. Für gezielte Modifikation.

: Bearbeitet durch User
von Norbert (der_norbert)


Lesenswert?

Sebastian W. schrieb:
> Nur konnte im Jahre
> 1978 keiner der Juroren 6502-Mnemonic lesen

Ihr hättet ihnen das kleine Kärtchen vom MOS-Technologies beilegen 
sollen.
Das mit den Mnemonics auf der Y-Achse und den Adressierungsarten auf der 
X-Achse.

von Jens G. (jensig)


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, ...

von Daniel A. (daniel-a)


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)

von Sebastian W. (wangnick)


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

von Axel K. (tokenizer)


Lesenswert?

Oh nice. Small and simple. Token gerafft wo es nur geht und für die 
ASCII zu Integer Umwandlung nimmt er ne Hashmap von 64KB. Ha ha. O.o ?? 
Aber gut. Ich habe was gelernt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.