2015-12-23 3 views
-2

Je développe un système d'exploitation. A partir des références, je dois passer en mode protégé 32 bits du mode réel 16 bits. Dans l'étape, son utilisation comme une instruction:Entrée en mode protégé 32 bits

bits 32 

Mais mon assembleur dit que est illégale, il utilise aussi comme instruction:

org 0x7c00 

quelques tutoriels utilisent [bits 32]. Mais j'utilise les deux, mais pas de chance.

Je googlé, mais cette fois-ci foiré

Ainsi, tout guidage serait utile.

Merci

+0

'bits 32' (ou équivalent) change le codage des instructions faites par l'assembleur. Il ne "fait" rien et ce n'est pas une instruction. Cela ne fait pas partie du passage au mode 32 bits (bien que ce soit utile pour générer le code 32 bits). De toute façon, il semble que vous deviez utiliser un autre assembleur. – harold

+0

Pourriez-vous s'il vous plaît nous donner quelques informations sur le compilateur que vous utilisez, et/ou quelle syntaxe utilisez-vous pour écrire votre code pour entrer en mode protégé? – ilpelle

Répondre

3

Vous devez indiquer à la CPU que vous voulez passer en mode protégé. Mieux vous commencez ici http://wiki.osdev.org/Babystep1 et regardez autour de ce site. Court: Faire quelques trucs en mode réel avec quelque chose comme use16 ou bits 16 au début, charger une valeur valide dans le gdt-registre avec lgdt [6byteGDTstruct], mettre le bit 0 dans le registre CR0, sauter loin quelque part dans votre code et utiliser use32 ou bits 32 de Là.