Software > Coding

GCC ohne MintLib

<< < (2/2)

mfro:

--- Zitat von: simonsunnyboy am Fr 01.11.2013, 17:33:09 ---Ich bin heute mal zum Austesten gekommen, und es läuft super!

Was mich wundert ist die zusätzliche leere Funktion void __main(void)
Diese wird zur Linkzeit benötigt, wird aber wohl garnicht aufgerufen. Was ist da der Trick?

Ferner wäre es imho sinnvoll, diese als eigentliche main zu haben. Wenn man keine Kommandozeilenargumente verwenden kann (was für diesen Usecase kleinstes Binary nicht stört), dann braucht man diese doch auch eigentlich nicht an die Funktion zu übergeben?

--- Ende Zitat ---

Den Aufruf von __main() generiert gcc selbst (als erstes Statement in _main()): versuch' mal, was passiert, wenn Du die Funktion weglässt. Das Ding wird man nicht los (macht aber m.E. nix und man kann es leicht in einer Library verstecken - s. libcmini).

Ich glaube das hat was mit C++ zu tun - gcc würde in __main() wohl die globalen Konstruktoren initialisieren.

simonsunnyboy:
Ich habe mal etwas rumgebastelt, wenn man das startup.s erweitert, muss man die leere ___main() nicht mehr im C Code mitanbieten:


--- Code: ---.globl ___main

___main:
rts

--- Ende Code ---

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln