Autor Thema: EmuTOS selbst compilieren  (Gelesen 140972 mal)

0 Mitglieder und 8 Gäste betrachten dieses Thema.

Offline Thorsten Otto

  • Benutzer
  • Beiträge: 1.315
Re: EmuTOS selbst compilieren
« Antwort #80 am: Sa 06.10.2018, 16:37:34 »
Was mich ein bisschen irritiert ist, daß cc1 in deinem Bild mit 45% CPU angezeigt wird. Der müsste eigentlich bei nahezu 100% sein (cc1 ist der eigentliche Compiler, alle anderen warten eigentlich hauptsächlich darauf, daß der fertig wird)

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: EmuTOS selbst compilieren
« Antwort #81 am: Sa 06.10.2018, 16:39:43 »
Zum Vergleich: Auf meinem Notebook baut ein komplettes EmuTOS 192k in 17 Sekunden(!).

Cygwin, oder?

Linux:
make clean
time make 192

real 0m7,744s
user 0m5,804s
sys 0m0,456s
mfro@thinkpad:~
And remember: Beethoven wrote his first symphony in C

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: EmuTOS selbst compilieren
« Antwort #82 am: Sa 06.10.2018, 17:03:50 »
Das mit dem Cache probiere ich mal. Es läuft ansonsten nichts und die Schreib/Lese LED der HDD blinkt so alle 20 bis 30 Sekunden mal kurz auf. Alles sehr langsam.

Auf der FireBee hat das Zugeben von 200MB (ja, MB, nicht KB) Cache die Compilierzeit gerade mal halbiert (auf deutlich unter 10 Minuten).

Allerdings ging da vorher die HDD-LED praktisch gar nicht mehr aus, insofern wird's auf dem TT wahrscheinlich nicht so deutlich ausfallen.
And remember: Beethoven wrote his first symphony in C

Offline tuxie

  • Benutzer
  • Beiträge: 6.834
  • Falcon! Milan! Schuetzt die Raubvoegel!
Re: EmuTOS selbst compilieren
« Antwort #83 am: Sa 06.10.2018, 17:35:08 »
Könntest eventuell das ganze bisschen beschleunigen wenn du die Files auf ein DMA device legst  (ACSI oder SCSI) da beim IDE ja die CPU den Datentransfer machen muss.. (nur eine Idee, ob es was bringt K.A.)
Tschau Ingo

Offline Lukas Frank

  • Benutzer
  • Beiträge: 13.423
  • fancy Atari Musik anDA Dance "Agare Hinu Harukana"
Re: EmuTOS selbst compilieren
« Antwort #84 am: Sa 06.10.2018, 17:44:19 »
Funktioniert das "time make ..." auf auf dem Atari?

Ich nutze IDE nur für eine CF zum Datenaustausch unter Single TOS, unter MiNT läuft NFS. Die Systemplatte ist eine LVD SCSI Platte ...

Offline gh-baden

  • Benutzer
  • Beiträge: 2.052
Re: EmuTOS selbst compilieren
« Antwort #85 am: Sa 06.10.2018, 17:47:31 »
Könntest eventuell das ganze bisschen beschleunigen wenn du die Files auf ein DMA device legst  (ACSI oder SCSI) da beim IDE ja die CPU den Datentransfer machen muss.. (nur eine Idee, ob es was bringt K.A.)

Öhm, warum dann die EmuTOS-Sourcen nicht gleich auf eine RAM-Disk legen, wenn man genug RAM hat? Dann spart man sich das gecache …
Wider dem Signaturspam!

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: EmuTOS selbst compilieren
« Antwort #86 am: Sa 06.10.2018, 17:50:48 »
Könntest eventuell das ganze bisschen beschleunigen wenn du die Files auf ein DMA device legst  (ACSI oder SCSI) da beim IDE ja die CPU den Datentransfer machen muss.. (nur eine Idee, ob es was bringt K.A.)

Öhm, warum dann die EmuTOS-Sourcen nicht gleich auf eine RAM-Disk legen, wenn man genug RAM hat? Dann spart man sich das gecache …

Lustigerweise ist /dev/ram in MiNT nach meiner Erfahrung nicht mal halb so schnell wie der MiNT-Cache.

Zumindest auf der FireBee. Mag woanders anders sein.
And remember: Beethoven wrote his first symphony in C

Offline Lukas Frank

  • Benutzer
  • Beiträge: 13.423
  • fancy Atari Musik anDA Dance "Agare Hinu Harukana"
Re: EmuTOS selbst compilieren
« Antwort #87 am: Sa 06.10.2018, 17:56:55 »
Bei einem Snapshot des Bildschirmes wird das Abbild im Ram unter u:/ram abgelegt und das dauert bei einer ein oder zwei Megabyte Datei einige Minuten. Also sehr langsam.

Offline Lukas Frank

  • Benutzer
  • Beiträge: 13.423
  • fancy Atari Musik anDA Dance "Agare Hinu Harukana"
Re: EmuTOS selbst compilieren
« Antwort #88 am: Sa 06.10.2018, 18:53:25 »
Ist fertig nach etwas mehr als 4 Stunden. Ich lasse das ganze morgen mal mit time vor dem Befehl laufen ...

Ich dachte oder hatte die Hoffnung die Größe die Rauskommt wäre ungefähr die gleiche wie mit der 8ter Version vom gcc. Gibt es irgendwo die aktuelle gcc Version für MiNT?


Offline Lukas Frank

  • Benutzer
  • Beiträge: 13.423
  • fancy Atari Musik anDA Dance "Agare Hinu Harukana"
Re: EmuTOS selbst compilieren
« Antwort #89 am: Sa 06.10.2018, 19:50:11 »
Auf meinem Notebook baut ein komplettes EmuTOS 192k in 17 Sekunden(!).

17 Sekunden zu 4 Stunden ist ja eine Hausnummer.

Offline Thorsten Otto

  • Benutzer
  • Beiträge: 1.315
Re: EmuTOS selbst compilieren
« Antwort #90 am: Sa 06.10.2018, 19:58:07 »
Gibt es irgendwo die aktuelle gcc Version für MiNT?

Für mint bisher nicht, nur als cross-compiler. Die Scripts und Patches sind aber praktisch identisch zu 7.3, kann also nur ne Frage der Zeit sein bis Miro den gebastelt hat ;)

Offline gh-baden

  • Benutzer
  • Beiträge: 2.052
Re: EmuTOS selbst compilieren
« Antwort #91 am: Sa 06.10.2018, 20:28:33 »
Auf meinem Notebook baut ein komplettes EmuTOS 192k in 17 Sekunden(!).

17 Sekunden zu 4 Stunden ist ja eine Hausnummer.

Nunja, in Zeiten, wo fast der gesamte Sourcecode in den Level-2-Cache von modernen, potenteren CPUs paßt … ein TT hat halt nur 3-5 MIPS. Ein 68060 liegt bei über 100 MIPS. Ein PowerPC 750/333 läuft Kreise um den - selbst wenn er ihn emulieren muss. Und das ist Prozessortechnik von 1999, nur 8 Jahre nach Ende des TT. Seitdem sind fast 20 Jahre vergangen.

Der L2-Cache in meinem Server ist größer als meine erste Festplatte, eine SH205.
Wider dem Signaturspam!

Offline Lukas Frank

  • Benutzer
  • Beiträge: 13.423
  • fancy Atari Musik anDA Dance "Agare Hinu Harukana"
Re: EmuTOS selbst compilieren
« Antwort #92 am: Sa 06.10.2018, 21:06:29 »
Es ist ja schön das es überhaupt noch geht !

Offline ari.tao

  • Benutzer
  • Beiträge: 2.248
  • Gesperrter User
Re: EmuTOS selbst compilieren
« Antwort #93 am: So 07.10.2018, 00:51:00 »
Glückwunsch, Frank! Da hast Du etwas geschafft, wovon ich noch meilenweit entfernt bin.

Ziemlich irritiert bin ich über die gemeldeten Zeiten und Größen. Wie hat denn Atari damals, sagen wir 1987, das TOS kompiliert? Weiß das jemand? Ich kann mir weder vorstellen, daß ein TOS zu kompilieren viele Stunden gebraucht hat, noch, daß da Bibliotheken & Tools von 1GB Größe nötig waren.
« Letzte Änderung: So 07.10.2018, 00:53:01 von ari.tao »
Falcon+ddd32MHz, TT+CrazyDotsGK und noch ein paar andere.

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: EmuTOS selbst compilieren
« Antwort #94 am: So 07.10.2018, 07:54:08 »
Ziemlich irritiert bin ich über die gemeldeten Zeiten und Größen. Wie hat denn Atari damals, sagen wir 1987, das TOS kompiliert? Weiß das jemand? Ich kann mir weder vorstellen, daß ein TOS zu kompilieren viele Stunden gebraucht hat, noch, daß da Bibliotheken & Tools von 1GB Größe nötig waren.

Atari hat den Alcyon-Compiler verwendet (der Standard-Compiler für CP/M 68K).

Der ist im Vergleich zu einem aktuellen gcc knalldoof, optimiert so gut wie nichts und kann - natürlich - nix von dem, was sich in den letzten 30 Jahren am C-Standard weiterentwickelt hat (und noch nicht mal all das, was damals schon Standard war). Der Alcyon war berüchtigt dafür, daß man mit ihm ganz leicht fehlerhafte Programme schreiben konnte, weil er nur eine sehr rudimentäre Fehlerbehandlung hatte.
Eigentlich nur ein Makroassembler, der ein wenig C versteht.

Im Vergleich dazu sind aktuelle C-Compiler Raketentechnik.

Sie finden (wenn man sie läßt) nahezu jeden Fehler, übersetzen den Quellcode zunächst in eine eigene "Zwischensprache", in der aufwendige Codeoptimierungen durchgeführt werden (gut für uns, weil wir so auch von Weiterentwicklungen der Optimierungsfunktionen profitieren können, obwohl niemand mehr das m68k-Backend pflegt), aber das kostet natürlich Ressourcen. Hinzu kommt, daß gcc eine "universelle" Compiler Collection darstellt, die nicht nur als Grundlage für C-Compiler, sondern auch für eine Vielzahl von anderen Sprachen verwendet wird. Und das nicht nur für m68k, sondern auch für -zig andere Architekturen. Das erzeugt natürlich Overhead, der der Geschwindigkeit nicht zuträglich ist.
 
Die originalen TOS-Sourcen kriegst Du nicht durch einen aktuellen C-Compiler (genausowenig, wie man ein aktuelles EmuTOS mit dem Alcyon-Compiler übersetzen könnte). Dazu hat sich die Sprache in 30 Jahren viel zu sehr weiterentwickelt (zum Glück!). Das ist so, wie wenn wir hier plötzlich Mittelhochdeutsch miteinander reden wollten.

Dazu kommt, das EmuTOS überwiegend in C geschrieben ist, während in den originalen TOS-Sourcen der Assembleranteil (das damalige C war viel zu lahm und doof für zeitkritische Dinge) deutlich überwiegt. Assembler läßt sich natürlich deutlich unaufwendiger übersetzen.

Weiterhin setzen alte Compiler mehr oder weniger direkt auf TOS auf, während gcc auf dem MiNT-Überbau aufsetzt, der ihm ein Unix-System vorspielt. Das macht die Sache natürlich auch nicht unbedingt schneller und ressourcenschonender.
« Letzte Änderung: So 07.10.2018, 07:58:49 von mfro »
And remember: Beethoven wrote his first symphony in C

Offline czietz

  • Benutzer
  • Beiträge: 3.683
Re: EmuTOS selbst compilieren
« Antwort #95 am: So 07.10.2018, 10:27:41 »
Zum Vergleich: Auf meinem Notebook baut ein komplettes EmuTOS 192k in 17 Sekunden(!).

Cygwin, oder?

Die obige Zahl ja. Jetzt mal unter dem Windows Subsystem for Linux und damit quasi nativ: 5 Sekunden für ein EmuTOS 192k. Ich hätte nicht gedacht, dass Cygwin den Prozess so stark verlangsamt.

Offline czietz

  • Benutzer
  • Beiträge: 3.683
Re: EmuTOS selbst compilieren
« Antwort #96 am: So 07.10.2018, 10:37:13 »
Der ist im Vergleich zu einem aktuellen gcc knalldoof, optimiert so gut wie nichts und kann - natürlich - nix von dem, was sich in den letzten 30 Jahren am C-Standard weiterentwickelt hat (und noch nicht mal all das, was damals schon Standard war). Der Alcyon war berüchtigt dafür, daß man mit ihm ganz leicht fehlerhafte Programme schreiben konnte, weil er nur eine sehr rudimentäre Fehlerbehandlung hatte.
Eigentlich nur ein Makroassembler, der ein wenig C versteht.

Im Vergleich dazu sind aktuelle C-Compiler Raketentechnik.

Dank @Thorsten Otto haben wir ja eine Build-Umgebung mit dem damaligen Alcyon-Compiler und TOS 2.06/3.06 Source-Code. Laut README dauert ein Compiliervorgang von Atari TOS damit auf dem STE auch schon ca. 2 Stunden -- und das, wie Du sagst, trotz des hohen Assembler-Anteils (ggü. EmuTOS) und des viel "dümmeren" C-Compilers.

Offline simonsunnyboy

  • Benutzer
  • Beiträge: 1.807
  • Rock'n'Roll is the thing - Jerry Lee is the king!
Re: EmuTOS selbst compilieren
« Antwort #97 am: So 07.10.2018, 10:46:35 »
Mich würde es nicht wundern, wenn Atari das TOS damals auf irgendeiner Workstation per Crosscompiler übersetzt hat. Henne/Ei Problem...ich glaube auch nicht, daß der erste ST Prototyp 4MB und Festplatte hatte ;)

Alcyon C mit Floppy uns zu wenig RAM ist sowas von einer Strafe.
Paradize - ST Offline Tournament
Stay cool, stay Atari!
1x2600jr, 1x1040STFm, 1x1040STE 4MB+TOS2.06+SatanDisk, 1xF030 14MB+FPU+NetUS-Bee

Offline gh-baden

  • Benutzer
  • Beiträge: 2.052
Re: EmuTOS selbst compilieren
« Antwort #98 am: So 07.10.2018, 11:08:33 »
Dank @Thorsten Otto haben wir ja eine Build-Umgebung mit dem damaligen Alcyon-Compiler und TOS 2.06/3.06 Source-Code. Laut README dauert ein Compiliervorgang von Atari TOS damit auf dem STE auch schon ca. 2 Stunden -- und das, wie Du sagst, trotz des hohen Assembler-Anteils (ggü. EmuTOS) und des viel "dümmeren" C-Compilers.

IIRC war das make dort strunzdoof, und der Alcyon auch im Vergleich zu anderen kontemporären Compilern nicht gerade toll war. Ich beziehe mich aber nur auf Gefluche von Bekannten um 1988, die dann schnell und gerne auf Mark Williams C/Lattice C oder dann Laser C wechselten. Und als Turbo C rauskam, war das Geschwindigkeitsrennen entschieden.

Was mich interessieren würde: ob bei nontrivialen Allerweltsaufgaben der gcc-Code tatsächlich schneller auf der Zielhardware (68030/16 …) läuft als PureC. Clevere Optimierungen sind ja prima, aber wenn dafür bspw. eine kleine Schleife ausgerollt wird, dann hat der 030 mit seinem winzigen 256 Byte-Instruktions-Cache halt schon verloren. Auf einer modernen CPU mit Kilobyte-weise Cache merkt man das natürlich nicht.

Zumindest am Mac steht man mit dem A/UX ANSI-C-Compiler (ab Werk war nur K&R dabei, der ANSI mußte gekauft werden) deutlich fixer da als mit gcc 2.9x. Okay, der ist auch steinalt, ich weiß, gibt aber nix neueres fertig dafür.

Und, um mal wieder ein Lob auszusprechen: Crosscompile-Umgebungen hat am Mac faktisch niemand1 der Community zur Verfügung gestellt. Tätschelt also hier bitte alle schön die letzten Tüftler und Entwickler, sie tun gutes und verlängern den Spaß am Gerät!

1: mpw for macOS / OS X geht als einziges, AFAIK, in die Richtung – immerhin hat man dann eine moderne Maschine vor sich, aber es wird nicht nativ compiliert, sondern da ist ein 68k-Emulator dazwischen. Aber immerhin bekommt man so das selbe Programm auf "System 1.0" (1984) als auch auf dem neuesten macOS Intel ans laufen – nativ!
« Letzte Änderung: So 07.10.2018, 11:23:32 von gh-baden »
Wider dem Signaturspam!

Offline gh-baden

  • Benutzer
  • Beiträge: 2.052
Re: EmuTOS selbst compilieren
« Antwort #99 am: So 07.10.2018, 11:55:28 »
Mich würde es nicht wundern, wenn Atari das TOS damals auf irgendeiner Workstation per Crosscompiler übersetzt hat. Henne/Ei Problem...ich glaube auch nicht, daß der erste ST Prototyp 4MB und Festplatte hatte ;)

Man benutzte wohl DEC-VAX-Maschinen mit vt100-Konsolen für die erste Entwicklung, und MV/8000: http://www.dadhacker.com/blog/?p=1051
Wider dem Signaturspam!