![]() |
Erklärung Register Direktive gesucht
Hallo,
der Code-Schnippsel stammt aus dem Zufallszahlengenerator der DEC und ich versuche den zu verstehen. Eigentlich kenne ich die Register-Direktive als Angabe der Calling convention, aber so wie es hier mit register = nil angegeben ist sagt mir das nichts. Kann mir das jemand erklären?
Delphi-Quellcode:
Grüße
var
// secure PRNG initialized by this unit DoRandomBuffer: procedure(var Buffer; Size: Integer); register = nil; DoRandomSeed: procedure(const Buffer; Size: Integer); register = nil; TurboMagic |
AW: Erklärung Register Direktive gesucht
Ich denke, das wird einfach eine Startinitialisierung sein wie
Delphi-Quellcode:
Sieht halt in der Konstellation etwas komisch aus.
var
I: Integer = 100; |
AW: Erklärung Register Direktive gesucht
Naja, nach dem eigentlich Register; den Compiler anweisen soll, alle Parameter möglichst
über CPU-Register statt dem Stack zu übergeben verstehe ich nicht welchen sinn eine Zuweisung mit nil hier haben soll...:? |
AW: Erklärung Register Direktive gesucht
Ah!
Hab's gerade selber verstanden: das ganze ist eine Variable, die euf eine Prozedur zeigt, die eben mit Aufrufkonvention Register arbeiten soll und die an der Stelle wo diese Variable deklariert wird mal sauber auf nil gesetzt werden soll. Wird dann im initialization Teil der betreffenden Unit mit einer richtigen Prozedur zugewiesen. |
AW: Erklärung Register Direktive gesucht
genau, register ist keine directive, sondern eine convention
und das als Typ für die Variable, mit Initial-Wert (der aber sowieso immer NIL ist, auch ohne Angabe) ![]() ![]() Das gilt aber nur für Win32. * wie das in Android/iOS/OSX/Linux aussieht ... keine Ahnung * in Win64 wird es aber vom Compiler ignoriert, da es hier im "System" eine Vorgabe gibt (für alle Programmiersprachen) -> sieht ähnlich wie standardmäßig im "Pascal" aus (von Links erst in die Register und der Rest auf den Stack) und immer mit StackFrame drumrum Ich vergess es immer, aber ich glaub Delphi/Pascal macht standardmäßig "register" und "pascal" ist bissl was Anderes (vielleicht war das im TurboPascal mal der Standard), also eigentlich wäre diese Angabe somit nicht nötig. Aber Vielleicht arbeitet der FreePascal-Compilerstandardmäßig eventuell ein bissl anders. |
AW: Erklärung Register Direktive gesucht
Ja, ich kann das auch nicht genau beurteilen und will auch nicht zuviel Arbeit in den Zufallszahlengenerator stecken...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz