2010-07-10 8 views
4

Quelle est la différence entre que les instructions? Par exemple dans le processeur ARM9, il ne devrait pas être:Assemblée? LD & MOV

ASM: mov r0, 0 
C: r0 = 0; 

ASM: ld r0, 0 
C: r0 = 0; 

?

Je ne sais pas pourquoi utiliser un ou l'autre: S

Répondre

8

Il doit être:

ASM: mov r0, 0 
C: r0 = 0; 

ASM: ld r0, 0 
C: r0 = *(pc + 0); 

Découvrez this carte de référence, doit avoir si vous développez pour ARM sur ASM.

+0

Oh donc avec ld Je reçois le contenu d'une adresse mémoire ... merci! – Puyover

4

Habituellement, les instructions de chargement sont utilisés pour charger des données à partir de la mémoire (directement ou indirectement) dans un registre, tandis que les données instruction de mouvement « se déplace » (copies) d'un opérande à un registre . Dans le cas de l'ARM, l'opérande source est une valeur (une constante) ou un registre (et à la fois peut être déplacé/rotation avant de copier dans le registre de destination).

La première (mov r0, #0?), À 0 les r0 registre; le second (un pseudo-op pour ldr?) devrait charger les données pointées par ordinateur (r15) plus décalage 0, et donc équivalent à r0 = *(pc + 0))

+1

Merci. Je vais mettre à jour ma réponse. –

1

Que ce soit appelé MOV ou LD dépend de la langue de montage particulier. Par exemple, le langage d'assemblage Z80 utilise LD pour tout, y compris l'affectation entre les registres et l'affectation des valeurs immédiates aux registres.

En général, vous devez toujours rechercher le sens de mnemoics dans le langage assembleur particulier que vous utilisez.

+1

Eh bien, en fait avec ARM il y a deux instructions, et ils sont très différents. MOV charge une valeur immédiate (d'une autre reg, ou une valeur codée dans l'opcode) dans un registre - pas d'accès à la mémoire. Avec LDR, un registre est chargé depuis la mémoire. Je suis d'accord à 100% avec votre dernière phrase. – Dan

+0

Je suis d'accord. La spécificité de l'assemblage est qu'il dépend de l'architecture. Raison de ceci que chaque architecture peut avoir/a ses propres commandes/spécificités de code machine. –