Mais quelle est l'instruction à l'adresse 0000:07C00 ? Mov ax, 07C0h ??
Donc les instructions se trouve dans le même ordre que je l'ai écrit ?
Mais quelle est l'instruction à l'adresse 0000:07C00 ? Mov ax, 07C0h ??
Donc les instructions se trouve dans le même ordre que je l'ai écrit ?
OuiMais quelle est l'instruction à l'adresse 0000:07C00 ? Mov ax, 07C0h ??
Donc les instructions se trouve dans le même ordre que je l'ai écrit ?
Responsable du projet SKAN (OS à but didactique)
Contactez moi pour toutes questions ou remarques sur le projet.
J'essaye de tracer mon code afin de vérifier ce qui se passe exactement, mon fichier.bin contient exactement:
B8C0078ED88EC0B800808ED0BC00F0BE1700E81200EBFE48656C6C6F20776F726C6420210D0A005053AC3C007409B40EBB0700CD10EBF25B58C3
avec une suite de 90909090 ...55AA
Comme l'instruction mov ax, 07C0h se trouve au début quelle est-elle exactement en base 16 ? elle fait combien d'octet ? est-ce B8C0078E du début ou plus ou moins d'octets ??
J'ai essayé de trouver les équivalences en binaire des instructions dans la doc Intel mais je n'ai pas trouvé, c'est dans quel volume ?
Volumes 2A et 2BJ'ai essayé de trouver les équivalences en binaire des instructions dans la doc Intel mais je n'ai pas trouvé, c'est dans quel volume ?
Responsable du projet SKAN (OS à but didactique)
Contactez moi pour toutes questions ou remarques sur le projet.
Waahhh :o
Je ne comprends rien
Je m'attendais plus à un truc du genre: mov == 01101110 et la dépendamment des opérandes d'autres égalités
Saurais-tu me guider un petit peu ?
LOL mais tu sais l'asm c'est sensé être compliquéJe m'attendais plus à un truc du genre: mov == 01101110 et la dépendamment des opérandes d'autres égalités
Pourquoi ne comprends tu pas ? C'est parce que la doc est en anglais ? Que il y a trop de choses à lire ? Que tu trouves que c'est mal expliqué ? Qu'est ce que tu ne comprends pas en particulier ?Je ne comprends rien (...)
Saurais-tu me guider un petit peu ?
Qu'est ce que tu as compris de l'organisation de la structure des instructions x86 ? (le chapitre du début) ? Pourrais tu en faire un résumé ?
Comment as tu fais ton approche avec la doc ? Je te conseille ca (sérieusement) : commencer par le début, et finir par la fin Tu verras, ca prendra peut être beaucoup de temps, mais après, tu comprendras parfaitement tout, dans les moindres détails... Peut être serait il interressant que tu nous/me fasse part de tes avancées, dans ce topic, en précisant bien quelles ont été tes difficultés...
Tu ne trouveras pas d'autres docs, c'est la seule qui existe...
Tu sais, tu ne comprendras pas toute cette doc d'un coup !
Responsable du projet SKAN (OS à but didactique)
Contactez moi pour toutes questions ou remarques sur le projet.
Je comprends l'anglais, assez pour le lire en tout cas
Par exemple quand je lis le volume 2B déjà ça: ModR/M byte
je ne sais pas ce que c'est, c'est du chinoix
Il y a aussi
OPCODE MAP
D The reg field of the ModR/M byte selects a debug register (for example,
MOV (0F21,0F23)).
E A ModR/M byte follows the opcode and specifies the operand. The operand is either a
general-purpose register or a memory address. If it is a memory address, the address is
computed from a segment register and any of the following values: a base register, an
index register, a scaling factor, a displacement.
F EFLAGS Register.
par exemple je n'ai aucune idée à quoi ça sert. Comme je disais je m'attendais plus à quelque chose du genre: Mov == 01101001
Je crois que je vais faire comme tu dis, je vais lire et au fur et à mesure si j'ai des questions je vais les poster ici, ça deviendra une analyse de la doc Intel ce topic
Rooo mais c'est simple, voyons !! C'est normal que tu ne comprennes pas si tu commence par la partie 2B (et pas 2A) !!Par exemple quand je lis le volume 2B déjà ça: ModR/M byte
Responsable du projet SKAN (OS à but didactique)
Contactez moi pour toutes questions ou remarques sur le projet.
Je me demandais une chose, est-il possible de faire un code en binaire pur et l'éxécuter sous un OS ? Par exemple windows ? J'imagine que dans le mieux que je pourrais faire serait de créer un exe Win32 pour Jmp sur à l'adresse de mon binaire pur, autrement comme dire à Windows d'exécuter mon code ?
J'aurais aimé faire un petit jeu de pong exécutable sur tout les OS pour x86 en le faisant en binaire pur.
Alors il te faudra un binaire par os (sans compter les compatibilités du style freebsd/nunux)...J'aurais aimé faire un petit jeu de pong exécutable sur tout les OS pour x86 en le faisant en binaire pur.
Sur windows ca va être chaud !! Par contre sur nux (qui utilise une int pour les syscalls, donc plus facile à utiliser), et avec un ptit format elf modifié (pour être plus simple), c'est très faisable !Je me demandais une chose, est-il possible de faire un code en binaire pur et l'éxécuter sous un OS ? Par exemple windows ? J'imagine que dans le mieux que je pourrais faire serait de créer un exe Win32 pour Jmp sur à l'adresse de mon binaire pur, autrement comme dire à Windows d'exécuter mon code ?
Mais bon, le principe est interressant...
Responsable du projet SKAN (OS à but didactique)
Contactez moi pour toutes questions ou remarques sur le projet.
C'est incroyable, j'apprends plein de trucs ici
Merci à vous tous
Mais pourquoi un binaire par OS ? c'est du binaire pur donc ça devrait fonctionner sur tout les OS non :
Un binaire pur ne fonctionnera que lorsque tu démarre toi même le PC.Mais pourquoi un binaire par OS ? c'est du binaire pur donc ça devrait fonctionner sur tout les OS non
A partir du moment où un OS digne de ce nom est lancé (cela exclu bien entendu MS-DOS), tu ne peux plus faire ce que tu veux. Windows, *BSD, Linux, KOS ... (bientôt Skan ...) passent en mode protégé, et créent des protection et des normes à respecter pour les acces à la mémoire, aux périfériques, aux systèmes de fichiers ...
Les acces aux périphériques (la carte vidéo par exemple) ne se font pas de la même manière sous Linux que sous Windows ... donc tu ne peux pas avoir le même binaire, ni le même code (à moins que tu travaille en C, Java ...)
sdx
ps: comment ça j'explique mal ?
Merci
En ce qui me concerne, tu expliques très bien
Donc je pourrais faire une série de jeu style Nintendo 8 bit qui fonctionnerait en binaire pur au démarrage du PC ?
Un peu comme les vieux Apple IIe ou il fallait mettre une diskette de jeu au démarrage du PC
Ça c'était géant
Avec Bochs les gens pourront jouer à mes jeux sous Windows
La j'ai un deuxième ordi, je vais le brancher pour tester le bootloader c'est idéal, parce que Bochs bug parfois
Skan ? C'est une nouvelle distrib linux ??
Par contre, si je veux accéder à plus de 1mb de mémoire il va faloir je passes en mode protégé n'est-ce pas ?
Sur ce, si je fais un noyau, je dois passer en mode protégé (avant) de le loader ? Mais pour loader un fichier en mémoire, car le noyau n'est qu'un fichier en binaire pur que l'on a fait, j'imagine que tout les noyaux sont en binaire pur non ? Sinon je vois mal comment on peut faire exécuter un exe ou un format de fichier précis à un OS avant que son noyau soit chargé
Mais pour cela, comment on charge un fichier en mémoire et ensuite y faire un jump ? Et il faut savoir aussi ou il va se retrouver en mémoire avant de faire un jump aussi. Sur le chargement du noyau je suis un peu perdu
Tu n'as pas lu la signature de 2PluS4 ? http://skan.developpez.comSkan ? C'est une nouvelle distrib linux ??
Oui.Par contre, si je veux accéder à plus de 1mb de mémoire il va faloir je passes en mode protégé n'est-ce pas ?
Ah ... je regrette d'être si lent : je suis justement en train d'écrire de la doc sur le sujet, mais elle n'est pas terminée En résumé :Sur ce, si je fais un noyau, je dois passer en mode protégé (avant) de le loader ? Mais pour loader un fichier en mémoire, car le noyau n'est qu'un fichier en binaire pur que l'on a fait, j'imagine que tout les noyaux sont en binaire pur non ? Sinon je vois mal comment on peut faire exécuter un exe ou un format de fichier précis à un OS avant que son noyau soit chargé Laughing
Mais pour cela, comment on charge un fichier en mémoire et ensuite y faire un jump ? Et il faut savoir aussi ou il va se retrouver en mémoire avant de faire un jump aussi. Sur le chargement du noyau je suis un peu perdu Laughing
- Tu peux faire ce que tu veux, il suffit que tu saches comment faire
- Grub te permet de charger directement un noyau au format exe elf.
- Pour charger un noyau, tu dois savoir où il se situe sur le support (disque dur, disquette), puis le charger en mémoire à l'adresse que tu veux, puis l'executer (avec un jump, en effet)
Vaste sujet ...
À l'adresse que je veux :o
Mais ce n'est pas illégal au cpu ? Je pourrais écraser des données importantes non ?
Si grub permet de charger un elf cela veut dire qu'il a le loader elf d'inclus dans son code.
ADRESSE | DESCRIPTIONEnvoyé par AsmCode
0000:0 Table des interruptions
0040:0 Bios Data Area
0050:0 LIBRE
A000:0 Mémoire vidéo (VGA)
B000:0 Mémoire vidéo
B800:0 Mémoire vidéo
C000:0 Espace réservé au BIOS
Tu n'as le droit d'ecrire que dans la partie LIBRE, c a d entre 00500 et 99999.
à verifier, mais je crois bien que c'est ça ...Si grub permet de charger un elf cela veut dire qu'il a le loader elf d'inclus dans son code. Very Happy
Ok je vois
Dit-moi est-ce que tu as msn ? j'aimerais bien t'ajouter à mes contacts, on pourrait discuter assembleur
Mais ça ne répond pas à ma question
Comment on "charge" le noyau en mémoire ? Dans le cas du bootloader c'est le bios qui le fait, mais pour le noyau on doit le charger soi-même, mais comment on fait pour transférer du disque dur à la mémoire un fichier quelconque ?
À propos: noyau == kernel :
C'est le bootloader qui se charge de charger le noyau, ou de charger un loader intermédiaire chargé lui même de charger le noyau !
on utilise en général l'int 0x13 du bios pour ca!
non pas tout à fait puisque "noyau" c'est un mot français alors que "kernel" c'est un mot anglais... Mais sur le principe c'est pareil !noyau == kernel
Vi vi c'est caSi grub permet de charger un elf cela veut dire qu'il a le loader elf d'inclus dans son code.
Responsable du projet SKAN (OS à but didactique)
Contactez moi pour toutes questions ou remarques sur le projet.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager