[MIC1]Mod r/m

Voir le sujet précédent Voir le sujet suivant Aller en bas

[MIC1]Mod r/m

Message  XavBod le Mar 26 Mai 2009, 16:19

Bonjour bonjour,
J'ai une question les byte du modR/M.
Prenons un exemple :
P.82 : ADD[EAX],EBX sera représenté en machine par 01 18 où 18 est calculé comme (00 011 000)
Pour le calcul du 18, je ne comprends pas comment on peux determiner si ce sera 00 ou 01 ou 10 ou encore 11....

Ceci est assez embetant car lors de l'examen oral, si on me demande de calculer un code, on risquerait d'entendre voler des mouches dans la salle ainsi que le claquement de mes genoux sous la table Very Happy

Ps: si quelqun pouvait aussi clarifier ma notion de r32/m32 car je pense qu'elle n'est pas exact

Merci d'avance

XavBod

Nombre de messages : 196
Age : 26
Prénom : Xavier
Statut : Etudiant 3eme indu
Localisation : Woluwe
Date d'inscription : 27/09/2008

Revenir en haut Aller en bas

Re: [MIC1]Mod r/m

Message  LSV le Mar 26 Mai 2009, 16:49

les 2 premiers bits correspondent au mode de transfert, les 3 suivants correspondent au registre "source" et les trois derniers correspondent au registre "destination".


Dans ce cas ci, on fait un transfert d'un registre vers mémoire. Ce mode de transfert a la code 00 vu que tu met EBX (registre) dans [EAX] memoire.

00 = registre a mémoire, donc ADD [...],registre
01 = registre a mémoire avec déplacement, donc ADD [...+...],registre
10 = mémoire a registre, donc ADD registre,[...]
11 = registre a registre, donc ADD registre,registre

J'espère que j'aurai pu t'aider, même si moi aussi ca reste très flou dans ma tête Very Happy

LSV

Nombre de messages : 638
Age : 27
Prénom : Jérome
Statut : Diplomé 2013
Localisation : Anderlecht
Date d'inscription : 24/09/2007

Revenir en haut Aller en bas

Re: [MIC1]Mod r/m

Message  Nicky le Mar 26 Mai 2009, 16:52

LSV a écrit:

J'espère que j'aurai pu t'aider, même si moi aussi ca reste très flou dans ma tête Very Happy

Pourtant je trouve ton explication très clair. merci

Nicky

Nombre de messages : 300
Age : 29
Prénom : Pierre
Statut : Tout fini ! 2012
Localisation : Bruxelles / Chimay
Date d'inscription : 18/03/2008

Revenir en haut Aller en bas

Re: [MIC1]Mod r/m

Message  nvs le Mar 26 Mai 2009, 18:31

LSV a écrit:les 2 premiers bits correspondent au mode de transfert, les 3 suivants correspondent au registre "source" et les trois derniers correspondent au registre "destination".
attention, ceci n'est pas correct. les 2 premiers (ceux de poids le plus fort) bits indiquent bien le mode de transfert mais les 3 suivants ne correspondent pas toujours à la source ni les 3 de poids faible à la destination. les 3 du milieu correspondent au registre impliqué en tant que registre, les 3 de poids faible au registre impliqué comme accès mémoire. d'où le nom : mod(e) r(egistre) m(émoire).

LSV a écrit:Dans ce cas ci, on fait un transfert d'un registre vers mémoire. Ce mode de transfert a la code 00 vu que tu met EBX (registre) dans [EAX] memoire.

00 = registre a mémoire, donc ADD [...],registre
01 = registre a mémoire avec déplacement, donc ADD [...+...],registre
10 = mémoire a registre, donc ADD registre,[...]
11 = registre a registre, donc ADD registre,registre

J'espère que j'aurai pu t'aider, même si moi aussi ca reste très flou dans ma tête Very Happy
la description détaillée des modes n'est pas tout à fait correcte :
00 : adresse dans registre
01 : adresse dans registre + déplacement sur un octet
10 : adresse dans registre + déplacement sur quatre octets
11 : pas d'accès mémoire mais registre directement

fort de ces connaissances, voyons en détail l'instruction add r32/m32,r32, codée 01 /r :
  • add [eax],ebx est codé avec un mode 00 (adresse dans registre), registre 011 (ebx) et mémoire 000 (eax contient l'adresse de l'emplacement mémoire)
  • add [eax+12],ebx est codé avec un mode 01 (adresse dans registre + déplacement sur un octet), registre 011 (ebx) et mémoire 000 (eax contient l'adresse de l'emplacement mémoire)
  • add [eax+1200],ebx est codé avec un mode 10 (adresse dans registre + déplacement sur quatre octets), registre 011 (ebx) et mémoire 000 (eax contient l'adresse de l'emplacement mémoire)

mais comment est codé add eax,ebx ? le mode est 11, mais ici pas d'accès mémoire, donc que vaut la partie mémoire du modr/m ? il faut se tourner vers l'instruction : add r32/m32,r32 : l'emplacement mémoire est la destination et, inversement, la destination est l'emplacement mémoire. on garde cette interprétation quand la destination n'est pas un emplacement mémoire. donc, avec l'instruction add r32/m32,r32 codée 01 /r, l'instruction add eax,ebx est codée avec un mode 11, un registre 011 (ebx) et mémoire 000 (eax, destination). pour d'autres instruction, l'ordre source/destination peut être inversé dans le modr/m. je l'ai explicitement et involontairement montré en classe, mes étudiants doivent s'en souvenir Smile











Dernière édition par nvs le Mar 26 Mai 2009, 19:00, édité 1 fois

_________________

nvs

Nombre de messages : 5238
Age : 43
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [MIC1]Mod r/m

Message  XavBod le Mar 26 Mai 2009, 18:58

Voilà qui est plus clair Smile Merci nvs et merci LSV même si celà n'était pas tout a fait juste Razz

XavBod

Nombre de messages : 196
Age : 26
Prénom : Xavier
Statut : Etudiant 3eme indu
Localisation : Woluwe
Date d'inscription : 27/09/2008

Revenir en haut Aller en bas

Re: [MIC1]Mod r/m

Message  Nicky le Mar 26 Mai 2009, 20:05

Nicky a écrit:
LSV a écrit:

J'espère que j'aurai pu t'aider, même si moi aussi ca reste très flou dans ma tête Very Happy

Pourtant je trouve ton explication très clair. merci


J'avais tout gober ^^

Nicky

Nombre de messages : 300
Age : 29
Prénom : Pierre
Statut : Tout fini ! 2012
Localisation : Bruxelles / Chimay
Date d'inscription : 18/03/2008

Revenir en haut Aller en bas

Re: [MIC1]Mod r/m

Message  Jhon le Mer 27 Mai 2009, 10:44

Oulà. Moi qui pensait avoir pigé le truc... Grand merci Mr NVS pour l'explication ! C'est celle-là qu'il faudrait mettre dans le syllabus, elle est plus claire que les 5-6 exemples qui se ressemblent comme deux gouttes d'eau (sans vouloir ternir le travail de Mr JCJ, hein). Smile

Jhon

Nombre de messages : 212
Age : 28
Prénom : Jonathan
Statut : promo réseaux 2012
Localisation : 50.879858N,4.34801E
Date d'inscription : 23/09/2008

Revenir en haut Aller en bas

Re: [MIC1]Mod r/m

Message  XavBod le Mer 27 Mai 2009, 11:11

Etant donner que j'ai ouvert ce post et que ca a un rapport direct :

Peut-on aligner plusieurs prefixes (taille,repetition etc..)
Si oui (je suppose que c'est logique), dans quel ordre faut-il les mettres Wink ?

XavBod

Nombre de messages : 196
Age : 26
Prénom : Xavier
Statut : Etudiant 3eme indu
Localisation : Woluwe
Date d'inscription : 27/09/2008

Revenir en haut Aller en bas

Re: [MIC1]Mod r/m

Message  nvs le Mer 27 Mai 2009, 14:43

l'ordre des préfixes n'a pas d'importance...





_________________

nvs

Nombre de messages : 5238
Age : 43
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [MIC1]Mod r/m

Message  nvs le Mer 27 Mai 2009, 15:01

je viens de trouver cette page, très intéressante Smile







_________________

nvs

Nombre de messages : 5238
Age : 43
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [MIC1]Mod r/m

Message  XavBod le Mer 27 Mai 2009, 15:03

Merci Smile
d'ailleurs c'est logique vu que chacun des prefixes a une valeur différente
Reprenons maintenant l'etude du cours


XavBod

Nombre de messages : 196
Age : 26
Prénom : Xavier
Statut : Etudiant 3eme indu
Localisation : Woluwe
Date d'inscription : 27/09/2008

Revenir en haut Aller en bas

Re: [MIC1]Mod r/m

Message  Contenu sponsorisé Aujourd'hui à 21:04


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum