Quelqu'un peut m'expliquer la suite de charger et de stocker des instructions dans le cadre de l'ARM ISA?
Je viens juste de commencer à apprendre les BRAS et je vais avoir du mal à comprendre ce que la charge et de stocker des instructions faire exactement.
Instructions de chargement:
ldrsb
ldrb
ldrsh
ldrh
ldr
Stocker des instructions:
strb
strh
str
Que signifie "charge halfword" signé ou non signé? Ou pour "charger octet" signé ou non signé? Quelle est la différence entre signés et non signés, et dans quelles applications certains de la charge/de stocker des instructions pratiques à utiliser? Dans l'ensemble, je suis à la recherche d'une compréhension intuitive de ce que ces instructions, car je suis toujours confus au sujet de la façon dont ils fonctionnent et quels sont leurs buts sont.
OriginalL'auteur Bob John | 2013-01-20
Vous devez vous connecter pour publier un commentaire.
Lorsque l'on parle de BRAS un "mot" est de 32 bits, une "halfword" est de 16 bits, et un "octet" est de 8 bits. Si vous lisez les instructions de la documentation dans les BRAS d'Architecture Manuel de Référence (qui vient d'obtenir l'un pour ARMv5 si vous ne savez pas lequel d'obtenir, infocenter.arm.com), vous verrez que une ldrb charges de l'octet dans le bas 8 bits du registre de destination rembourrage de la partie supérieure de 24 bits pour les zéros. Un ldrsb signe étendre au lieu de pad avec des zéros. En va de même pour halfword.
si vous avez un code comme ceci:
Et soit a ou b ou les deux étaient dans la mémoire au moment que vous avez besoin pour ce faire plus puis vous le feriez idéalement voulez faire un signe étendu (en supposant que vous avez dit à votre compilateur que le char est signé) de charge pour enregistrer des instructions signe d'étendre les registres, de sorte que vous pouvez effectuer le calcul et ont les drapeaux à droite pour la comparaison.
Du BRAS de BRAS de.
LDRSB (Charge de Registre Octet Signé) charge un octet de la mémoire, de connexion s'étend sous la forme d'un mot de 32 bits, et écrit le résultat dans un registre.
LDRB (Charge de Registre Octet) charge un octet de la mémoire, zéro s'étend sous la forme d'un mot de 32 bits, et écrit le résultat dans un registre.
qu'entendez-vous par exemple, prendre un ldr instruction ajouter un b à maintenant, il est un octet de transfert au lieu d'un mot de transfert.
OriginalL'auteur old_timer
BRAS est un RISC (reduced Instruction Set Computing), de l'architecture, de la signification de la mémoire doit être déplacé dans et hors de registres en utilisant les instructions que vous faites allusion à l', de charger et de stocker des instructions.
(pris sur le BRAS de Montage de la Langue de William Hohl)
Charger et stocker des instructions (en général) viennent dans le prolongement de la forme:
(bien qu'il existe des différences selon le type de mode d'adressage que vous souhaitez utiliser, mais je ne vais pas entrer dans les ici, si vous souhaitez en savoir plus sur d'autres modes d'adressage, vous devriez vérifier "BRAS de post-index et pré-indice d'aborder les")
Le "type" est facultatif et est décrite dans le tableau ci-dessus, où vous pouvez choisir de travailler avec halfwords, octets ainsi que signé ou non signé octets ou halfwords. Vous avez également la possibilité de charger ou d'enregistrer de multiples registres.
Vous avez également la possibilité d'ajouter un code condition pour l'instruction (cond), qui est utilisé pour définir l'état des drapeaux de tenue dans le Programme Actuel du Registre de Statut (CPSR) - si vous souhaitez en savoir plus à ce sujet, vous pouvez rechercher "BRAS de l'exécution conditionnelle' et 'codes'.
Dans les BRAS, vous devez fournir la source/destination inscrivez-vous ET vous devez également fournir un registre contenant une adresse de référencement d'un emplacement dans la mémoire. C'est parce qu'un BRAS de l'enseignement est l'une longueur fixe (32 bits) et certains de ces bits doivent être utilisés pour l'instruction, c'est l'auto, il est donc impossible pour encapsuler un 32 bits d'adresse de mémoire à l'intérieur d'un 32 bits ARM instruction.
Dans l'exemple ci-dessus, 'Rt' est le registre où la valeur de chargement à partir de la mémoire de la terre (ou le registre contenant la valeur à stocker dans la mémoire, si vous effectuez un magasin). 'Rn' est le registre contenant l'adresse. Les crochets sont en place pour dire le processeur que nous travaillons avec un registre qui contient une adresse, que nous travaillons avec un pointeur. L'option décalage est présent dans le cas où vous souhaitez compensée par un montant spécifique de la base de registre (ce qui est très utile dans tous les types d'applications utiles, mais je n'aborde pas ici).
J'espère que ceci vous a donné un aperçu de la manière dont les BRAS charger et stocker des instructions de travail! 🙂
OriginalL'auteur Dilworth