J'apprends le développement de système d'exploitation et un débutant bien sûr. Je voudrais construire mon système dans un environnement en mode réel qui est un environnement 16 bits utilisant le langage C.Comment fonctionne la fonction `asm()` dans le langage C?
En C, j'ai utilisé une fonction asm()
pour convertir les codes à 16 bits comme suit:
asm(".code16")
qui dans la langue de GCC pour générer 16 bits (executables pas exactement bien).
Question:
Supposons que j'ai deux fichiers d'en-tête et head1.h
head2.h
et un fichier main.c
. Le contenu du main.c
fichier sont les suivants:
asm(".code16");
#include<head1.h>
#include<head2.h>
int main(){
return 0;
}
Maintenant, Depuis que je mon code avec la commande pour générer un fichier exécutable 16 bits puis inclus head1.h
et head2.h
, dois-je faire la même chose dans tous les fichiers d'en-tête que je dois créer? (ou) Est-il suffisant d'ajouter la ligne asm(".code16");
une fois?
OS: Ubuntu
compilateur: Gnu CC
Je vous recommande de ne pas utiliser gcc pour compiler le code 16 bits. Ce que vous utilisez est un kludge qui cause beaucoup de problèmes. – fuz