2009-07-25 4 views
-5

Dans un ordinateur 80486, ce qui est le pire des cas (y compris le fetch) nombre de accès à la mémoire de cette instruction:accès mémoire le pire des cas dans l'assemblage 80x86

add dword [x],0x123FA4 

Il est connu qu'un opcode sans opérandes deux octets de longueur.

+1

probablement vous devriez essayer de lire les manuels d'Intel et essayer de résoudre vos problèmes vous-même plutôt que d'afficher des questions aléatoires en attendant une explication de quelque chose d'étrange. –

+0

la réponse est 8 mais je ne sais pas pourquoi – nisnis84

+0

ce n'est pas les devoirs j'apprends pour un essai !!!!! – nisnis84

Répondre

4

De mémoire, l'instruction a un octet d'opcode ("ajouter"), un octet de mode d'adresse, un décalage pour x (4 octets) et la constante (4 octets) ==> 10 octets. Je suppose que le 486 récupère 4 octets à la fois de la mémoire avec une adresse de bus alignée sur les limites DWORD de 4 octets. Donc 10 octets prend sans doute 3 lectures de mémoire (= 10/4 arrondi) peu importe où vous les placez. Toutefois, si l'octet d'opcode est placé dans le dernier octet d'un DWORD, les 9 octets restants couvrent 3 DWORDS supplémentaires par rapport au nombre total de lectures. En réalité, il peut être 4.

Pour effectuer l'ajout, l'emplacement X doit être récupéré . Supposons que X est divisé sur une limite DWORD -> 2 lectures. L'ajout de la constante se produit à l'intérieur de la CPU, et la somme est réécrite à travers la même division de frontière DWORD -> 2 écritures. Donc, le pire des cas devrait être 8 opérations de mémoire.

Questions connexes