部件? LD& MOV

时间:2010-07-10 14:10:59

标签: assembly arm

这些说明有什么区别?例如,在ARM9处理器中,它不应该是:

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

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

我不知道为什么要使用其中一个:S

4 个答案:

答案 0 :(得分:8)

必须是:

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

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

查看this参考卡,如果您正在为ASM上的ARM开发,则必须参考。

答案 1 :(得分:4)

通常,LoaD指令用于将数据从存储器(直接或间接)加载到寄存器中,而MOVe指令将数据从操作数“移动”(复制)到寄存器。在ARM情况下,源操作数是一个值(常量)或寄存器(在复制到目标寄存器之前,它们都可以移位/旋转)。

那么第一个(mov r0, #0?),将寄存器r0设置为0;第二个(ldr的伪操作?)应该加载pc(r15)加上偏移0指向的数据,因此等同于r0 = *(pc + 0)

答案 2 :(得分:2)

试用本指南:ARM Assembler Guide

答案 3 :(得分:2)

是否称为MOV或LD取决于特定的汇编语言。例如,Z80汇编语言将LD用于所有内容,包括寄存器之间的分配以及寄存器的立即值分配。

一般情况下,您应该始终以您正在使用的特定汇编语言查找mnemoics的含义。