Die Namen gescheiter Compiler darfst du uns jetzt aber nicht vorenthalten. Das wäre richtig gemein!
Meine Referenzen sind in aller Regel clang und gcc auf
https://godbolt.org/ mit den Einstellungen
-m32 -O3
(-m32 wenn man halt 32bit
asm haben will) und
__attribute((regparm(3)))
(damit die Parameter genauso übergeben werden wie in Delphi) über der Routine.
Interessanterweise spuckt bei genau diesem Code
Code:
struct Bla {
double one, two;
};
__attribute((regparm(3)))
Bla Init() {
Bla result;
result.one = 0;
result.two = 0;
return result;
}
erst clang ausm trunk dasselbe aus wie gcc. Vorher dämliche einzelne mov Befehle.
P.S. Bevor hier einer mit FPC um die Ecke kommt - ich kenn da nicht alle Schalter, aber der generiert zumindest in der Version die auf Godbolt ist noch schlimmeren Müll.