Programmation d'un mini OS - C - Programmation
Marsh Posté le 15-03-2006 à 00:32:16
je pense que la catégorie programmation est plus approprié a ce genre de posts.
Je déplace
Marsh Posté le 15-03-2006 à 00:45:00
ben pour sauvegarder les registres, le mieux est de faire un bon vieux push
mais dis moi, y'a quand même plus simple pour commencer à programmer que d'attaquer un OS non
Marsh Posté le 15-03-2006 à 00:49:33
Et bien j'ai déjà programmé pas mal d'autres trucs, en luttant c'est vrai. Et là pour l'OS j'ai pas trop le choix à vrai dire.
Sinon pour reprendre le topic je vois toujours pas comment avec un push j'arriverai à mettre les valeurs contenues dans les registres dans un unsigned long contexte[Nb_Registres] :s
Marsh Posté le 15-03-2006 à 08:16:51
cris__tof a écrit : Et bien j'ai déjà programmé pas mal d'autres trucs, en luttant c'est vrai. Et là pour l'OS j'ai pas trop le choix à vrai dire. |
longjmp() / setjmp() est fait pour ça...
Marsh Posté le 15-03-2006 à 12:11:29
J'ai le droit à ces macros :
#define __MOVSB__(dest, src, n) \
__asm__ __volatile__( \
"rep\n" \
"\tmovsb" \
: "=S" (src), "=D" (dest), "=c" (n) \
: "0" (src), "1" (dest), "2" (n) \
: "memory", "cc" )
#define __MOVSL__(dest, src, n) \
__asm__ __volatile__( \
"rep\n" \
"\tmovsl" \
: "=S" (src), "=D" (dest), "=c" (n) \
: "0" (src), "1" (dest), "2" (n) \
: "memory", "cc" )
Mais après recherches sur le net ( http://www-128.ibm.com/developerwo [...] /l-ia.html ) j'ai du mal à comprendre leur fonctionnement.
Marsh Posté le 15-03-2006 à 12:56:38
encore de la syntaxe AT&T
la macro MOVSB copie n octets de src vers dest
la macro MOVSL copie n longs de src vers dest
Marsh Posté le 15-03-2006 à 12:58:13
Merci pour l'info :]
Ceci dit j'ai toujours pas trouvé ma solution pour mettre les valeurs des registres dans un tableau
Marsh Posté le 15-03-2006 à 15:09:38
Merci à Push pour l'url :} Je n'avais pas vu ton post. Ca m'aide pas mal.
Marsh Posté le 15-03-2006 à 00:11:59
Salut à tous,
J'ai de grosses grosses difficultés dans la programmation d'un OS (machine intel 80x86). Je comprends à peu près toutes les choses qu'il y a à faire, mais au moment de coder en C bah c'est là que ca devient difficile : / (la prog est pas ma matière de prédilection :°)
Par exemple, pour gérer le changement de contexte pour mon noyau, j'ai très bien compris qu'il faut faire une "photographie" des registres qu'un processus p1 utilise id les sauvegarder dans un tableau (registres eax,ebx,ecx,edx,esi,edi,cs,ds,es,ss,fs,gs,esp,ebp,esp et eflags) mais je vois pas du tout comment sauvegarder les valeurs de ces registres Je présens l'insertion d'assembleur, mais j'ai franchement beaucoup de mal.
Si quelqu'un a des tuyaux pour me faire avancer, m'aider dans la compréhension ce serait bien sympa. :]
PS : c'est mon premier post sur le forum, bien que j'aille tous les jours sur hfr . Merci de pas être trop méchant avec moi :]