Zeph Le 21/09/2002 à 20:14 ça sert à lancer des programmes en mode Kernel...

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
j'ai posé la question dans actualité, Kevin m'a répondu mais j'attend aussi sa nouvelle réponse pour en savoir un peu plus...
Ca change quoi exactement pour mettre en mode kernel?
En clair qu'est ce qu'il y a dedans? ca modifie koi sur la calcu?
[quote:59a945abe4="Swal89"]Ca change quoi exactement pour mettre en mode kernel?[/quote:59a945abe4]
Le programme ne marche pas si un kernel n'est pas installé, parce qu'il a besoin d'une fonction du kernel pour être relogé au lieu de faire faire ce travail à AMS comme prévu.
[quote:59a945abe4="Swal89"]En clair qu'est ce qu'il y a dedans? ca modifie koi sur la calcu?[/quote:59a945abe4]
Ça exporte une fonction à une place non utilisée de la table des vecteurs (où il y a les adresses des routines qui gèrent les interruptions, de traps etc.), et le programme pour kernel appelle cette fonction pour se reloger. Après l'appel de cette fonction du kernel, le programme ne continuera pas directement l'exécution, mais le kernel appellera le point d'entrée [i:59a945abe4]_main[/i:59a945abe4] du programme comme une sous-routine. (Le début du programme, qui est chargé d'appeller cette routine du kernel, s'appelle le "stub", d'où le nom "no stub" pour les programmes qui n'ont pas besoin de kernel.)
La routine de relogement du kernel se distingue de celle de AMS de 2 manières:
* le programme doit être dérelogé à exécution finie - c'est pour ça que le kernel l'appelle comme s'il était une sous-routine du kernel.
* elle gère des trucs supplémentaires par rapport au simple relogement: insertion des adresses pour les ROM_CALLs (plutôt que la procédure d'appel indirect prévue par TI), "RAM_CALLs" (adresses de certaines variables globales privées (non-exportées) de AMS, dont le kernel fournit l'adresse pour ceux qui aiment programmer de manière sale au lieu d'utiliser les ROM_CALLs prévus), librairies dynamiques.
[quote:59a945abe4="Bob 64"]Par contre, étant donné qu'ils n'ont (sauf exeption) pas besoin de librairie dynamique, toutes les fonctions qu'ils utilisent sont contenues dans le programme, parfois plusieurs fois. Pour ça, les programmes nostub sont souvent plus gros que leurs homologues kernel.[/quote:59a945abe4]
Mais:
* pas toujours (le stub et le header du format kernel prennent de la place)
* si c'est le cas, la différence de taille est négligeable
* si on compte la taille totale (programme+kernel+librairie dynamique), le programme _nostub est plus petit.
