|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 409 ![]() |
Bonjour,
J'ai écris un secteur boot qui charge un programme à l'adresse réelle 0000:0500 ce programme passe en mode protégé et reviens en mode réel selon le modèle déjà évoqué. mais pour aller un peu plus loin j'utilise un FAR JMP afin de passer en adressage 32bits (merci à ce site qui m'a fait comprendre l'importance du bit D_BIG). J'ai donc une portion de mon code qui s’exécute avec un adressage 32bits...pour cela je suis passé de cette syntaxe Code :
Code :
et dans le second les offset ne tiennent pas compte du ORG 500h si je place ORG dans le segment, je me retrouve avec un padding...c'est pas ce que je veux moi ! alors comment mixer USE16 et USE32 dans un fichier binaire sans entête ?
__________________
Developpez.com: Mes articles, forum FlashPascal Entreprise: Execute SARL Produits : UPnP, RemoteOffice, FlashPascal Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5% |
||||
|
00
|
|
|
#2 |
|
Membre habitué
![]() passe le balais et l'aspirateur Inscription : mars 2008 Messages : 111 ![]() |
je ne suis pas vraiment connaisseur de tasm (je suis sous fasm) mais je pense que l'on peut mettre use16 et use32 plusieur fois dans le programme, comme la directive orgXXXh qui peut etre placé plusieurs fois, juste avant la partie du programme concerné 'en tout cas c'est possible sous fasm)
|
|
00
|
|
|
#3 | |
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 409 ![]() |
Citation:
__________________
Developpez.com: Mes articles, forum FlashPascal Entreprise: Execute SARL Produits : UPnP, RemoteOffice, FlashPascal Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5% |
|
|
00
|
|
|
#4 | ||||
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 409 ![]() |
j'ai trouvé...bien que je n'en comprend pas la logique
au lieu d'écrire ceci Code :
Code :
__________________
Developpez.com: Mes articles, forum FlashPascal Entreprise: Execute SARL Produits : UPnP, RemoteOffice, FlashPascal Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5% |
||||
|
00
|
|
|
#5 | ||||
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 409 ![]() |
Nouveau problème que je poursuis ici
je pensais que le code généré suivait l'ordre du source...or visiblement les portions notées CODE16 sont regroupées et la portion CODE32 est mise à la fin or mon FAR JMP était sous la forme Code :
j'ai placé un label en début de CODE32 et en début du second CODE16 et remplacé le "DW $ +4 " par un "DW label" bizarrement cela fonctionne dans la portion CODE32, mais l'offset en CODE16 est nul ?! Code :
quelle est la bonne syntaxe ? existe-il une autre manière de basculer l'adressage en 16/32bits sans déclarer des SEGMENT ? je pensais pouvoir faire un peu ce que je veux en assembleur, mais le compilateur m'impose des règles
__________________
Developpez.com: Mes articles, forum FlashPascal Entreprise: Execute SARL Produits : UPnP, RemoteOffice, FlashPascal Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5% |
||||
|
00
|
|
|
#6 |
|
Membre habitué
![]() passe le balais et l'aspirateur Inscription : mars 2008 Messages : 111 ![]() |
alors il faut changer de compilateur!
![]() pour l'assembleur il y en a plein: masm, nasm, et fasm (mon préféré) tasm est peut être plus adapté a la compilation d'executable pour les système d'exploitation standard et pas vraiment indiqué pour les bidouillage je te conseillerait bien fasm mais c'est un peut parce que je ne connait (et n'uttilise) que celui la et je n'ai pas non plus expérimenté le mélange code 16bits et 32bits |
|
00
|
|
|
#7 | ||
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 409 ![]() |
Hello,
en effet, suite à ton premier message j'ai pris FASM qui s'avère bien plus adapté à mon projet voici mon secteur boot en mode protégé avec passage en adressage 32bits je ne trouve pas de doc claire sur le multitâche LTR, TTS & Cie...quelqu'un connait un article qui me permettrait de mettre cela en place à la suite de ce secteur boot ? je précise de suite que je veux juste m'amuser et pas créer un nouvel OS révolutionnaire donc je cherche à savoir comment on met ça en place indépendamment de tout OS, c'est ce qu'il se passe au niveau processeur qui m'intéresse. La question principale étant : qu'est-ce qui provoque la bascule d'une tâche à une autre - en mode préemptif évidement Code :
__________________
Developpez.com: Mes articles, forum FlashPascal Entreprise: Execute SARL Produits : UPnP, RemoteOffice, FlashPascal Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5% |
||
|
00
|
|
|
#8 |
|
Membre habitué
![]() passe le balais et l'aspirateur Inscription : mars 2008 Messages : 111 ![]() |
concernant le tss et le multitache j'avait déja lancé un sujet la dessus:
http://www.developpez.net/forums/d84...on-multitache/ par contre on a pas approfondit le sujet sur le(s) tss |
|
00
|
|
|
#9 | |
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 409 ![]() |
Citation:
pour l'instant je n'ai que les sources de MenuetOS (sous FASM) qui ont l'air assez clairement rédigés, mais une bête mise en place de deux tâches en // auraient été plus simple pour démarrer d'après ce que j'ai lu sur ton post, le multitâche est mis en place par l'OS avec l'IRQ0...le(s) TSS ne sont qu'une façon de sauvegarder l'état de la tâche en cours...ce n'est pas très excitant finalement je vais plutôt regarder la gestion des interruptions matériel car mon secteur boot ne permet pas même une lecture clavier
__________________
Developpez.com: Mes articles, forum FlashPascal Entreprise: Execute SARL Produits : UPnP, RemoteOffice, FlashPascal Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5% |
|
|
00
|
|
|
#10 |
|
Membre habitué
![]() passe le balais et l'aspirateur Inscription : mars 2008 Messages : 111 ![]() |
si tu veux mettre en place la lecture clavier il va te falloire plus d'un secteur de boot, donc il faudrat d'abord un programme qui chargeras la suite du programme
j'ai commencé aussi a faire un petit os (seulement monotache) donc j'ai dût faire un bootloader pour disquette (qui a l'avantage de ne pas pourrir le système de fichier fat12), le programme de boot charge seulement un fichier dans un emplacement mémoire et lui passe la main la source du programme est dans le zip MRT12 (téléchargeable ici , dans le sous dossier "util" et le programme en question est "amorc.com", il est en fait constitué de deux partie: - le secteur de boot - le programme qui est chargé de l'écrire sur la disquette sans détruire le système de fichier bon par contre je suis pas vraiment champion du commentaire |
|
00
|
|
|
#11 | |
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 409 ![]() |
Citation:
au départ j'avais un secteur boot 16bits qui chargeait un binaire 16bits KERNEL.BIN depuis une disquette 1.44 en FAT12...mais pour mes tests un secteur boot suffisait alors j'ai allégé la chose d'ailleurs dans un premier temps je me contenterais d'un système sur disquette non formatée, c'est à dire quel a suite du noyau sera dans les secteurs 1, 2 ... et le secteur 0 se chargera simplement de monter tout cela en mémoire. par contre ta page me renvoie une erreur 403
__________________
Developpez.com: Mes articles, forum FlashPascal Entreprise: Execute SARL Produits : UPnP, RemoteOffice, FlashPascal Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5% |
|
|
00
|
|
|
#12 |
|
Membre habitué
![]() passe le balais et l'aspirateur Inscription : mars 2008 Messages : 111 ![]() |
erreur 403? hélas mon site pourri est sous olympe network, un hébergeur gratuit qui est pas vraiment fiable
|
|
00
|
Copyright © 2000-2013 - www.developpez.com