C'est un peu plus compliqué que ça.Pourquoi c'est différent sur un PC ? Je pense au mode protégé par exemple car si j'ai compris, c'est un bit à passer à 1 dans un registre et si l'adresse du registre est connu alors on peut le faire en C ? Non ?
Pour activer le mode protégé, il faut activer le bit de poids faible du registre cr0 à 1 après avoir généré la GDT.
en asm x86 notation Intel :
Je ne sais pas si l'assembleur inline des compilateurs donnent l'accès aux registres de commande cr0 à cr3 (ou jusqu'à cr4 je sais plus)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 mov eax,cr0 or al,1 mov cr0,eax
Par ailleurs, ce simple code ne suffira pas, il faudra créer la GDT, puis l'activer via l'opcode lgdt, qui n'est peut-être pas non plus géré par le code inline des compilateurs.
Dans le cas de Linux, par exemple, tu as un code amorce en assembleur.
Un, microcontrôleur, c'est plus simple à programmer qu'un PC par exemple. Un micro-contrôleur est plus simpliste, tu ne gères pas de segmentation ou pagination, ni x cartes graphiques de x constructeurs. L'utilisation d'un afficheur 7 segments par exemple est beaucoup plus simple que d'afficher du texte avec une police bine précise. Et encore une fois, le C ne fait pas tout, ce sont les biothèques annexes qui permettent d’arriver à quelque chose. Tu dois utiliser probablement ulibc qui est une micro libc adaptée aux micro-controleurs.
Partager