J'ai quelques aspects supplémentaires ici:
Envisager l'opération "a=b/c" x86 mise en œuvre de cette comme
mov eax,b
xor edx,edx
div dword ptr c
mov a,eax
Comme un bonus supplémentaire de la div instruction edx contiendra le reste.
Un processeur RISC nécessiterait d'abord de chargement les adresses de b et c, le chargement b et c à partir de la mémoire de registres, de faire la division et de chargement de l'adresse de l'un puis de stocker le résultat. Dst,src syntaxe:
mov r5,addr b
mov r5,[r5]
mov r6,addr c
mov r6,[r6]
div r7,r5,r6
mov r5,addr a
mov [r5],r7
Ici, il ne sera pas en reste.
Si toutes les variables doivent être chargés par le biais de pointeurs les deux séquences peuvent devenir plus si c'est de moins en moins de possibilité pour le RISC, car il peut avoir un ou plusieurs pointeurs déjà chargé dans un autre registre. x86 a moins de registre de sorte que la probabilité que le pointeur se trouve dans l'un d'entre eux est plus petit.
Avantages et inconvénients:
Le RISC manuels utilisateur peuvent être mélangés avec les environs de code pour améliorer l'enseignement de la planification, c'est moins d'une possibilité avec x86 au contraire qui cela fonctionne (plus ou moins bien en fonction de la séquence) à l'intérieur du PROCESSEUR lui-même. Le RISC séquence ci-dessus sera généralement 28 octets de long (7 instructions de 32 bits/4 octets largeur chacune) sur une architecture 32 bits. Ce sera la cause de l'arrêt de la puce de mémoire de travail de plus lors de l'extraction de l'emploi (sept extrait). Le plus dense x86 séquence contient moins d'instructions et, même si leurs largeurs varient vous êtes probablement à la recherche à une moyenne de 4 octets/l'instruction. Même si vous disposez d'instruction met en cache pour accélérer les sept récupère signifie que vous aurez un déficit de trois ailleurs à rattraper par rapport à la x86.
L'architecture x86 avec moins de registres à sauvegarder/restaurer les moyens qu'il va probablement faire les commutateurs de thread et de traiter les interruptions plus vite que RISC. Plus de registres pour enregistrer et restaurer nécessite plus de RAM temporaire de la pile d'espace pour faire les interruptions et les plus permanents de la pile d'espace pour stocker fil unis. Ces aspects devraient faire x86 un meilleur candidat pour l'exécution pure RTOS.
Sur une note plus personnelle, je le trouve plus difficile à écrire RISC assemblée que x86. - Je résoudre ce par écrit le RISC routine en C, la compilation et la modification du code généré. C'est plus efficace à partir d'un code de production point de vue et probablement moins efficace d'un point de vue de l'exécution. Tous ces 32 registres de garder une trace de. Avec x86 c'est dans l'autre sens: de 6 à 8 registres, avec de "vrais" noms rend le problème plus facile à gérer et inspire plus de confiance que le code produit fonctionnera comme prévu.
Laid? C'est dans l'oeil du spectateur. Je préfère sont "différents".