AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Erklärung Register Direktive gesucht

Ein Thema von TurboMagic · begonnen am 12. Dez 2020 · letzter Beitrag vom 14. Dez 2020
Antwort Antwort
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.960 Beiträge
 
Delphi 12 Athens
 
#1

Erklärung Register Direktive gesucht

  Alt 12. Dez 2020, 15:40
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:
var
  // secure PRNG initialized by this unit
  DoRandomBuffer: procedure(var Buffer; Size: Integer); register = nil;
  DoRandomSeed: procedure(const Buffer; Size: Integer); register = nil;
Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Erklärung Register Direktive gesucht

  Alt 12. Dez 2020, 15:58
Ich denke, das wird einfach eine Startinitialisierung sein wie
Delphi-Quellcode:
var
  I: Integer = 100;
Sieht halt in der Konstellation etwas komisch aus.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.960 Beiträge
 
Delphi 12 Athens
 
#3

AW: Erklärung Register Direktive gesucht

  Alt 12. Dez 2020, 16:10
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...
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.960 Beiträge
 
Delphi 12 Athens
 
#4

AW: Erklärung Register Direktive gesucht

  Alt 12. Dez 2020, 16:28
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: Erklärung Register Direktive gesucht

  Alt 14. Dez 2020, 18:49
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)

http://docwiki.embarcadero.com/RADSt...l_und_safecall
https://de.wikipedia.org/wiki/Aufrufkonvention

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.
$2B or not $2B

Geändert von himitsu (14. Dez 2020 um 18:59 Uhr)
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.960 Beiträge
 
Delphi 12 Athens
 
#6

AW: Erklärung Register Direktive gesucht

  Alt 14. Dez 2020, 22:14
Ja, ich kann das auch nicht genau beurteilen und will auch nicht zuviel Arbeit in den Zufallszahlengenerator stecken...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz