• [^] # Re: Interruption logicielle

    Posté par . En réponse au journal UEFI, à la découverte du nouveau BIOS.... Évalué à 10.

    Pour être exact:

    Tant que la RAM n'est pas initialisée, on ne peut pas stocker de stack, donc on ne peut pas appeller de fonctions! Le code produit par GCC ne peut donc pas être utilisé.

    Pour règler ce problème, deux solutions sont en places:
    - Les développeurs de Coreboot ont développé un compilateur C qui inline absolument tout, de façon à pouvoir être utilisé sans mémoire. Ça s'appelle ROMCC, c'est relativement bugué mais ça a le mérite d'exister. Cette solution est sur la voix de l'abandon en faveur de la seconde solution.
    - Les processeurs modernes permettent d'utiliser du "Cache-As-RAM" (CAR), c'est à dire d'utiliser le cache du processeur comme mémoire en attendant d'avoir initialisé la RAM. Il n'y a donc que le code pré-CAR et l'initialisation du CAR qui doivent être codés en assembleur; une fois que l'on peut utiliser le CAR, on peut avoir une stack et donc faire tourner du code généré par GCC.