Windows98

(Lutz Donnerhacke) lutz at iks-jena.de
Mit Jan 12 17:36:09 CET 2000


* Thomas Findeisen wrote:
>Da fällt mir spontan was ein, vielleicht hat einer ein paar gedanken dazu
>(Lutz ?). Aus seligen alten 6502 und 65816 - AssemblerZeiten kenne ich noch
>diverse DisAssembler, speziell fuer den 6502 gab es da echt gute Sachen, ich
>hatte damals sogar einen eigenen geschrieben der immerhin sogar versucht
>hatte Dokumentationen zu dem erstellten Quelltext zu ergänzen (z.B. auch
>Label erfand etc.). Ist es von der Theorie nicht auch möglich C oder C++
>Quelltexte wieder in den SourceCode zu wandeln ?

Es gibt derartige Decompiler. I.d.R. sind die Compiler nämlich so schlecht,
daß die Strukturen rückauflösbar sind. Sind auch noch Debug Infos dabei,
kommt man zielich weit. (Abgesehen von Verlusten durch den Optimierer)

>schauen können ;-).  Wobei ich immernoch behaupten will dass reiner AssCode
>immer schneller bleibt als optimiertes Compilat (auch mit
>RunTime-Berechnungen etc.).

Dazu gab es in comp.lang.ada einen Thread vor einigen Monaten. Ergebnis:
Theoretisch kann der Programmierer einfach den Compileroutput verbessern und
ist so immer besser. Andererseits kann der Compiler viele Optimierungen
durchführen, die dem Programmierer zu aufwendig bleiben müssen (z.B.
Registerzuordnungen).

Es sprechen zwei Gründe gegen Hand-ASM:
 - Die Compiler kennen die Zielmaschine deutlich besser als der Programmierer.
   Besonders in Superscalaren Grenzsituationen, wo nach dem Jump noch für 5
   Takte Code ausgeführt wird.  
 - Die 80/20 Regel: 80% der Rechenzeit werden von 20% des Codes verbraten.
   Rekursiv angewendet (das darf man!) gilt: 64% der Rechenzeit wird in
   4% des Codes verbraten, 51% der Zeit in 0.8% des Codes, ...
   Ab einem gewissen Punkt könnte man dann optimieren, jedoch zeigt sich,
   das mit der Änderung des Algorithmus diese 0.8% Code nur noch 1% der
   Rechenzeit ausmachen.

Mehr dazu in Donald E. Knuth. The Art of Computer Programming

>Welten bewegt haette aber ich hab einiges gehoert dass sich intern schon ein
>wenig was getan hat, z.b. die Sache mit dem Image des Speichers auf Pladde
>(Rechner faehrt in 5 Sekunden wieder hoch), dann echtes preemptives

Das geht mit einem anderen init(8) auch ohne Image.