Einzelnen Beitrag anzeigen

Benutzerbild von mael
mael

Registriert seit: 13. Jan 2005
391 Beiträge
 
Delphi XE3 Professional
 
#33

Re: Delphi objektfähig machen

  Alt 5. Jun 2005, 13:14
Zitat von alcaeus:
Ein Delphi-Kompilat wird immer ausschliesslich nur auf Windows laufen, fertig.
Leider falsch. Schau Dir mal http://www.dwp42.org/ an.
Außerdem hat man, wenn man die System.pas auf das Nötigste kürzt, schon eine Möglichkeit. Z.B. kann man Delphi .obj-Dateien erzeugen lassen, und dann mit speziellen Tools daraus eine Flat-Binary (also ohne PE-Header und Co machen). Sonst könnte man auch noch versuchen aus einer EXE den Code-Teil zu extrahieren, und die Basis-Address auf 00000000 anstatt 00400000 zu setzten.

Zitat von alcaeus:
Wenn du Betriebssystemunabhaengig programmieren willst, musst du dir den wahren Kern in Assembler schreiben, den Kernel des Betriebssystem in einer Systemsprache wie C, und den Rest kannst du in einer x-beliebigen Sprache schreiben.
C hat BS-Programmierung nicht gepachtet. Mit Freepascal geht sowas recht gut. Ein Minimalprogramm das was auf den Schirm schreibt nachdem es von einem in Assembler geschriebenen Bootloader geladen wurde ist sehr leicht zu machen. (siehe z.B. das Delphine-Projekt)


@stefan2005: Ich habe auch mal probiert das mit Delphi zu machen, aber es gibt zwei Gründe warum ich aufgegeben habe:
1.) Ich werde Delphi auf dem neuen OS nicht neu kompilieren können und daher keine nativen Module oder nativen Treiber erstellen können. Zwar könnte man einen PE-Patcher schreiben oder PE selbst verwenden, aber das schränkt doch sehr stark ein.
2.) Die Übersetzung der System.pas ist sehr sehr sehr aufwändig. Die Windows-API Aufrufe sind nicht so sehr das Problem, sondern eher daß viele Funktionen in der System.pas ein fertiges BS mit vielen Highlevel Funktionen vorraussetzen und daher kaum Kernelmodule erstellt werden können. Was im Moment keine Probleme macht weil es fehlt, wird nach Erweiterung des Programms/Treibers dann doch gebraucht.
Noch ein Problem: Viele Funktionen setzten den User-Modus(also Ring 3) wo der Speicher geschützt ist vorraus, z.B. um fehlerhafte Pointer zu erkennen (erste 64 KB sind immer geschützt, Pointer in diesem Bereich=Zugriffsverletzung). Diese Vorrausetzungen sind im Kernel-Modus alle unangenehm und potentiellen Fehlerquellen.

Fazit: So schön es wäre den Delphi-Compiler zu verwenden, meiner Meinung nach ist FreePascal hier besser geeignet. Natürlich ist es möglich Delphi-Kompilate zu verwenden, aber ich frage mich ob der Arbeitsaufwand sich lohnt. Außerdem müßtest Du Dir die Professional kaufen, denn den SoureCode darf man nicht weitergeben.
HxD, schneller Hexeditor:
http://mh-nexus.de/hxd
  Mit Zitat antworten Zitat