Das kommt drauf an. Bei trivialen Datentypen verhält sich
const
wie CallByValue:
Delphi-Quellcode:
Unit1.pas.45: A(X);
005CDEEF 8B45F8 mov eax,[ebp-$08] // CallByValue
005CDEF2 E8D9FFFFFF call A // procedure A(X: Integer)
Unit1.pas.46: B(X);
005CDEF7 8D45F8 lea eax,[ebp-$08] // CallByReference
005CDEFA E8D5FFFFFF call B // procedure B(var X: Integer)
Unit1.pas.47: C(X);
005CDEFF 8B45F8 mov eax,[ebp-$08] // CallByValue
005CDF02 E8D1FFFFFF call C // procedure C(const X: Integer)
Gut... Mov und lea hat laut meiner x86 reference die gleiche Anzahl von Taktzyklen... Also egal... aber wenn es CallByValue ist - ist die nicht Beschreibbarkeit Compilermagic...?