Principalement le switch de contexte entre les threads (au moins en C, ou il n'y a pas de coroutines inclues dans le langage).
Plein de choses dans la libgcc, mais ça compte pas, ça fait partie du compilateur (multiplications, divisions, etc pour différents types).
Les opérations atomiques ou de synchronisation de mémoire cache (souvent une seule ligne d'assembleur via un inline en C), encore que, gcc fournit des "builtins" qui évitent d'écrire ça directement.
Je crois que Linux a aussi ses propres trucs pour des raisons de performances (opérations sur des bitfields, par exemple? ça fait un moment que j'ai pas mis le nez dedans)
Probablement un petit morceau de bootloader, encore que, avec EFI ou openfirmware, on a déjà un environnement assez confortable au démarrage pour que ça ne soit pas nécessaire.
Ça c'est si on fait du C. Mais si on fait un langage qui ne permet pas de faire tout ce que fait le C (volatiles, trucs moches avec des pointeurs pour l'accès direct à la mémoire, par exemple), on sera probablement obligé de mettre un peu plus d'assembleur pour faire les trucs en question.
[^] # Re: c'est vraiment la caractéristique numéro 1 ?
Posté par pulkomandy (site web personnel, Mastodon) . En réponse à la dépêche Redox OS, le prochain système d’exploitation à conquérir le monde ?. Évalué à 10.
Principalement le switch de contexte entre les threads (au moins en C, ou il n'y a pas de coroutines inclues dans le langage).
Plein de choses dans la libgcc, mais ça compte pas, ça fait partie du compilateur (multiplications, divisions, etc pour différents types).
Les opérations atomiques ou de synchronisation de mémoire cache (souvent une seule ligne d'assembleur via un inline en C), encore que, gcc fournit des "builtins" qui évitent d'écrire ça directement.
Je crois que Linux a aussi ses propres trucs pour des raisons de performances (opérations sur des bitfields, par exemple? ça fait un moment que j'ai pas mis le nez dedans)
Probablement un petit morceau de bootloader, encore que, avec EFI ou openfirmware, on a déjà un environnement assez confortable au démarrage pour que ça ne soit pas nécessaire.
Ça c'est si on fait du C. Mais si on fait un langage qui ne permet pas de faire tout ce que fait le C (volatiles, trucs moches avec des pointeurs pour l'accès direct à la mémoire, par exemple), on sera probablement obligé de mettre un peu plus d'assembleur pour faire les trucs en question.