Hallo!
Zitat von
tommie-lie:
Es gibt keinen 16-Bit-Emulator (ntvdm) mehr!
Dann dürften auch 16 Bit Dlls aus Borland-Pascal-Zeiten nicht mehr ladbar sein, da dannn das nötige
API fehlt. Hab allerdings in Delphi Funktionen wie LoadLibrary16... gefunden. Wenn ich deinen Einwurf, tommie-lie, richtig verstanden habe, gibt es diese Funktionen dann nicht mehr.
Die
Dll könnte auch unter Borland Pascal so geschrieben werden, das beispielsweise Assemblerfunktionen aufgerufen werden, die mit den 32 Bit Registern
arbeiten:
asm db 66h mov ax,bx, wobei durch das Byte 66h, wenn das der richtige OpCode dafür ist, dafür sorgt, das die 32 Bit, Äquivalente verwendet werden, falls der integrierte Assembler verwendet wird. Außerdem enthält Borland Pascal den Turbo-Assembler, der die Direktive .386 beherrscht, womit dann aus dem Code ein 32 Bit Programm entstht. Dann in der
Dll Funktionen definieren, die in Turbo-Assembler geschrieben sind. (In der
Dll Objektdatei dazulinken...).
Die
Dll könnte außerdem 32Bit-Funktionen des Windows
API aufrufen.
Die
Dll ist doch aber dann immer noch 16 Bittig, zumindest das Ladeformat? Die Verwendung solch einer
Dll wird doch sicher dann problematisch? In ihr werden zwar dann 32 Bit Funktionen aufgerufen, es gibt inzwischen auch eine 32 Bit Version des DOS Extenders von Borland Pascal, aber der BPascal Compiler erzeugt doch trotzdemnoch 16 Bit Code (16 Bit Aufrufadressen auch in
Dll)? Da liege ich doch sicher richtig in der Annahme, das Borland Pascal DLLs, auch wenn sie nur 32 Bit-Funktionen aufrufen und den 32 Bittigen DOS-Extender voraussetzen, wie dann auch das übrige Programm, das die
Dll verwendet, auf keinen Fall auf 64 Bit Rechnern im 32 Bit Modus laufen. Und wenn ich diese Borland Pascal
Dll zusammen mit Delphi verwenden wollte, steht das Problem 16 Bittiger Aufrufadressen im Raum und außerdem die fehlenden Ladefunktionen für die 16 Bittige
Dll. (LoadLibrary16,GetProcedureAddress16,...
Nun denn, ein schönes WE wünscht
Delphifan2004