Pl2 ANNEXE.DOC/fr: Difference between revisions
Jump to navigation
Jump to search
Olivier.jan (talk | contribs) (Replacing content with updated version) |
Olivier.jan (talk | contribs) mNo edit summary |
||
Line 12: | Line 12: | ||
-------------------------- |
-------------------------- |
||
− | Pour rester très simple, on peut dire qu'un |
+ | Pour rester très simple, on peut dire qu'un désassembleur a |
exactement la fonction contraire d'un assembleur: |
exactement la fonction contraire d'un assembleur: |
||
L'assembleur code les instructions de votre programme en binaire |
L'assembleur code les instructions de votre programme en binaire |
||
− | et le |
+ | et le désassembleur lit les codes binaire, les reconnait, et les |
traduits pour vous donner finalement le LISTING du programme. |
traduits pour vous donner finalement le LISTING du programme. |
||
− | Comme cette |
+ | Comme cette opération est assez délicate, il se peut qu'il n'arrive |
pas à traduire tous les codes qu'il rencontre ... |
pas à traduire tous les codes qu'il rencontre ... |
||
− | Sur la plupart des |
+ | Sur la plupart des désassembleurs, il est possible d'obtenir soit |
− | le |
+ | le désassemblage d'un programme en CODE ASCII (LISTING) soit un |
− | + | désassemblage en CODE HEXA (Dans ce cas,il y a rarement des erreurs |
|
− | dans le |
+ | dans le décodage du programme) |
− | + | Réfèrez vous à la notice de votre ASSEMBLEUR pour en savoir plus, la |
|
− | pluspart des assembleurs sont |
+ | pluspart des assembleurs sont livrés avec une DESASSEMBLEUR... |
Line 34: | Line 34: | ||
Un DEBUGGER est un utilitaire qui vous sera par la suite indispens- |
Un DEBUGGER est un utilitaire qui vous sera par la suite indispens- |
||
− | sable, quand vous |
+ | sable, quand vous écrirez des programmes d'une longue taille. |
Comme sont nom l'indique, il permet de chercher le BUG (Parasite, |
Comme sont nom l'indique, il permet de chercher le BUG (Parasite, |
||
erreur) qui fait planter votre programme... |
erreur) qui fait planter votre programme... |
||
− | Il resemble un peu à un |
+ | Il resemble un peu à un désassembleur, mais son plus grand intérrèt |
et qu'il permet de visualiser le contenu des registre,du PC,du SR... |
et qu'il permet de visualiser le contenu des registre,du PC,du SR... |
||
Cet utilitaire accompagne souvent un ASSEMBLEUR, et il est assez |
Cet utilitaire accompagne souvent un ASSEMBLEUR, et il est assez |
||
− | + | spécifique... |
|
Je ne pourrais donc pas vous en parler plus longuement, il suffira |
Je ne pourrais donc pas vous en parler plus longuement, il suffira |
||
− | de vous |
+ | de vous réfèrer à la notice de votre ASSEMBLEUR... |
'SP' sera traduit par A7 ... |
'SP' sera traduit par A7 ... |
||
− | NB: Un |
+ | NB: Un débugger fonctionne souvent en MODE TRACE. |
− | --- Ce mode est |
+ | --- Ce mode est activé par la mise à 1 du bit T de SR. |
− | Le MODE TRACE dirige l' |
+ | Le MODE TRACE dirige l'exécution d'un programme d'exception dont |
l'adresse se trouve dans le 29°ème VECTEUR D'EXCEPTION et qui |
l'adresse se trouve dans le 29°ème VECTEUR D'EXCEPTION et qui |
||
− | s' |
+ | s'exécute à chaque instruction décodée par le 68000. |
Pour mettre une de nos routine à la place de ce programme d'exception, |
Pour mettre une de nos routine à la place de ce programme d'exception, |
||
Line 62: | Line 62: | ||
.Passer en MODE SUPERVISEUR pour pouvoir changer la valeur |
.Passer en MODE SUPERVISEUR pour pouvoir changer la valeur |
||
du vecteur d'exception et activer le bit T de SR |
du vecteur d'exception et activer le bit T de SR |
||
− | . |
+ | .Déposer l'adresse de la nouvelle routine dans le vecteur d'exception |
(Avec MOVE.L #ADDRESSE,$24) du mode trace |
(Avec MOVE.L #ADDRESSE,$24) du mode trace |
||
.Passer en mode trace par activation du bit T de SR (Par exemple avec |
.Passer en mode trace par activation du bit T de SR (Par exemple avec |
||
Line 69: | Line 69: | ||
La routine elle même ne devra pas modifier SP (Ou alors le reposi- |
La routine elle même ne devra pas modifier SP (Ou alors le reposi- |
||
tionner),car à la fin de celle-ci, on devra mettre un RTE: |
tionner),car à la fin de celle-ci, on devra mettre un RTE: |
||
− | Le RTE va |
+ | Le RTE va dépiler le PC pour retourner au programme principal: |
− | Changer SP entrainerait une mauvaise restauration du PC |
+ | Changer SP entrainerait une mauvaise restauration du PC sauvé sur |
la pile système... |
la pile système... |
||
Line 77: | Line 77: | ||
------------------------- |
------------------------- |
||
− | Voilà la structure de la |
+ | Voilà la structure de la mémoire ROM et RAM des ST: |
Line 101: | Line 101: | ||
$01FFFFF fin de la RAM pour les MEGA 2 ST |
$01FFFFF fin de la RAM pour les MEGA 2 ST |
||
en |
en |
||
− | $0FA0000 : |
+ | $0FA0000 : début ROM de 128 Ko |
en |
en |
||
$0FEFFFF : ROM de 192 Ko du système d'exploitation |
$0FEFFFF : ROM de 192 Ko du système d'exploitation |
||
Line 107: | Line 107: | ||
$0FF8000 : Registres internes |
$0FF8000 : Registres internes |
||
en |
en |
||
− | $0FF8200 : Registres |
+ | $0FF8200 : Registres vidéo |
en |
en |
||
$0FF8600 : Registres DMA et FCD (Disk) |
$0FF8600 : Registres DMA et FCD (Disk) |
||
Line 113: | Line 113: | ||
$0FF8800 : Registres AY3-8910 (sons) |
$0FF8800 : Registres AY3-8910 (sons) |
||
en |
en |
||
− | $0FFFA00 : Registres MFP (Voir chapitre |
+ | $0FFFA00 : Registres MFP (Voir chapitre précédent) |
en |
en |
||
$0FFFC00 : Registres des ACIA (Clavier et Midi) |
$0FFFC00 : Registres des ACIA (Clavier et Midi) |
||
Line 125: | Line 125: | ||
Voilà, cette initiation se termine ici, il ne me reste plus qu'à |
Voilà, cette initiation se termine ici, il ne me reste plus qu'à |
||
vous remercier pour votre collaboration. |
vous remercier pour votre collaboration. |
||
− | (Et à vous |
+ | (Et à vous féliciter pour la bonne idée que vous avez eu en |
voulant vous mettre à l'assembleur...) |
voulant vous mettre à l'assembleur...) |
||
Line 133: | Line 133: | ||
C'est à vous maintenant d'explorer le reste de ce langage aux capa- |
C'est à vous maintenant d'explorer le reste de ce langage aux capa- |
||
− | + | cités fantastique... |
|
Ma mission se termine ici ! (OHHH GOD!) :SALUT ! |
Ma mission se termine ici ! (OHHH GOD!) :SALUT ! |
||
Line 145: | Line 145: | ||
Remerciements: |
Remerciements: |
||
− | Merci à Vincent et Dominique pour avoir |
+ | Merci à Vincent et Dominique pour avoir testé cette initiation en |
− | avant première et pour l'aide qu'ils m'ont |
+ | avant première et pour l'aide qu'ils m'ont apporté. |
(Surtout pour leurs suggestions et leurs approbations...) |
(Surtout pour leurs suggestions et leurs approbations...) |
||
Remerciements à THOMSON EFCIS pour la documentation sur le 68000 |
Remerciements à THOMSON EFCIS pour la documentation sur le 68000 |
||
− | Remerciements à FREDERIK pour ses aides |
+ | Remerciements à FREDERIK pour ses aides précieuses... |
Latest revision as of 21:05, 17 December 2023
--------------------- ANNEXE --------------------- *** LES DESASSEMBLEURS *** -------------------------- Pour rester très simple, on peut dire qu'un désassembleur a exactement la fonction contraire d'un assembleur: L'assembleur code les instructions de votre programme en binaire et le désassembleur lit les codes binaire, les reconnait, et les traduits pour vous donner finalement le LISTING du programme. Comme cette opération est assez délicate, il se peut qu'il n'arrive pas à traduire tous les codes qu'il rencontre ... Sur la plupart des désassembleurs, il est possible d'obtenir soit le désassemblage d'un programme en CODE ASCII (LISTING) soit un désassemblage en CODE HEXA (Dans ce cas,il y a rarement des erreurs dans le décodage du programme) Réfèrez vous à la notice de votre ASSEMBLEUR pour en savoir plus, la pluspart des assembleurs sont livrés avec une DESASSEMBLEUR... *** LES DEBUGGERS *** --------------------- Un DEBUGGER est un utilitaire qui vous sera par la suite indispens- sable, quand vous écrirez des programmes d'une longue taille. Comme sont nom l'indique, il permet de chercher le BUG (Parasite, erreur) qui fait planter votre programme... Il resemble un peu à un désassembleur, mais son plus grand intérrèt et qu'il permet de visualiser le contenu des registre,du PC,du SR... Cet utilitaire accompagne souvent un ASSEMBLEUR, et il est assez spécifique... Je ne pourrais donc pas vous en parler plus longuement, il suffira de vous réfèrer à la notice de votre ASSEMBLEUR... 'SP' sera traduit par A7 ... NB: Un débugger fonctionne souvent en MODE TRACE. --- Ce mode est activé par la mise à 1 du bit T de SR. Le MODE TRACE dirige l'exécution d'un programme d'exception dont l'adresse se trouve dans le 29°ème VECTEUR D'EXCEPTION et qui s'exécute à chaque instruction décodée par le 68000. Pour mettre une de nos routine à la place de ce programme d'exception, il suffit de changer l'adresse que contient le vecteur d'exception qui controle le mode trace. Pour cela, il faut: .Passer en MODE SUPERVISEUR pour pouvoir changer la valeur du vecteur d'exception et activer le bit T de SR .Déposer l'adresse de la nouvelle routine dans le vecteur d'exception (Avec MOVE.L #ADDRESSE,$24) du mode trace .Passer en mode trace par activation du bit T de SR (Par exemple avec ORI.w #%1000000000000000,SR) La routine elle même ne devra pas modifier SP (Ou alors le reposi- tionner),car à la fin de celle-ci, on devra mettre un RTE: Le RTE va dépiler le PC pour retourner au programme principal: Changer SP entrainerait une mauvaise restauration du PC sauvé sur la pile système... *** LA MEMOIRE DES ST *** ------------------------- Voilà la structure de la mémoire ROM et RAM des ST: ADRESSES : CONTENU -------------------- $0000000 : SP après un RESET $0000004 : PC après un RESET à $0000008 de $00003FF : Les VECTEURS d'EXCEPTION à $0000400 : Les VARIABLES SYSTEME à $00007FF de $001FFFF : La RAM à $007FFFF fin de la RAM pour les 520 ST à $00FFFFF fin de la RAM pour les 1040 ST à $01FFFFF fin de la RAM pour les MEGA 2 ST en $0FA0000 : début ROM de 128 Ko en $0FEFFFF : ROM de 192 Ko du système d'exploitation en $0FF8000 : Registres internes en $0FF8200 : Registres vidéo en $0FF8600 : Registres DMA et FCD (Disk) en $0FF8800 : Registres AY3-8910 (sons) en $0FFFA00 : Registres MFP (Voir chapitre précédent) en $0FFFC00 : Registres des ACIA (Clavier et Midi) ---------------- Voilà, cette initiation se termine ici, il ne me reste plus qu'à vous remercier pour votre collaboration. (Et à vous féliciter pour la bonne idée que vous avez eu en voulant vous mettre à l'assembleur...) Vous pensez bien que la programmation en assembleur ne se termine pas ici, au contraire,cette initiation n'avait que pour but de vous apprendre les bases de la programmation en 68000. C'est à vous maintenant d'explorer le reste de ce langage aux capa- cités fantastique... Ma mission se termine ici ! (OHHH GOD!) :SALUT ! L'auteur: PIECHOCKI Laurent --------- 8,Impasse Bellevue 57980 TENTELING Remerciements: Merci à Vincent et Dominique pour avoir testé cette initiation en avant première et pour l'aide qu'ils m'ont apporté. (Surtout pour leurs suggestions et leurs approbations...) Remerciements à THOMSON EFCIS pour la documentation sur le 68000 Remerciements à FREDERIK pour ses aides précieuses...
Back to ASM_Tutorial