| |||
| Home > ARM 및 Thumb 명령어 > 일반 데이터 처리 명령어 > MOV 및 MVN | |||
이동 및 이동하지 않음
MOV{S}{cond}Rd,Operand2
MOV{cond}Rd, #imm16
MVN{S}{cond}Rd,Operand2
인수 설명:
S선택적 접미사입니다. S를 지정하면 연산 결과의
조건 코드 플래그가 업데이트됩니다(조건부 실행 참조).
cond선택적 조건 코드입니다(조건부 실행 참조).
Rd대상 레지스터입니다.
Operand2유연한 두 번째 피연산자입니다. 옵션에 대한 자세한 내용은 유연한 두 번째 피연산자를 참조하십시오.
imm160 ~ 65535 범위에 있는 값입니다.
MOV 명령어는 의
값을 Operand2로 복사합니다.Rd
MVN 명령어는 값을
가지고 값에 대해 비트 단위 논리 NOT 연산을 수행한 후 결과를 Operand2에
배치합니다.Rd
경우에 따라 어셈블러에서 MVN을 MOV로 또는 MOV를 MVN으로
대체할 수 있습니다. 디스어셈블리 목록을 읽을 때는 이러한 사항에 주의해야 합니다. 자세한 내용은 명령어 대체를 참조하십시오.
MOV Rd,Rm 구문은 Rd 또는 Rn = pc와 함께 사용할 수 있지만 둘 모두와
함께 사용할 수는 없습니다. 다른 모든 경우는 ARMv7 ARM에서 향후 제공되지 않을 예정입니다.
r15를 로
사용하면 명령어 주소에 8을 더한 값이 사용됩니다.Rd
r15를 로
사용할 경우 다음 사항이 적용됩니다.Rd
실행이 결과에 해당하는 주소로 분기됩니다.
S 접미사를 사용하면 현재 모드의 SPSR이
CPSR로 복사됩니다. 이 접미사를 사용하여 예외에서 복귀할 수 있습니다(RealView Compilation Tools
개발자 설명서의 6장 프로세서 예외
처리 참조).
사용자 모드 또는 시스템 모드에서 r15를 로
사용할 경우 RdS 접미사를 사용하면 안 됩니다. 이러한 명령어를 실행하면 예상할
수 없는 결과가 발생하지만 어셈블러에서 어셈블리 타임에 경고를 표시할 수 없습니다.
레지스터에 의해 제어된 시프트가 있는 데이터 처리 명령어에서는 또는
피연산자에 r15를 사용할 수 없습니다(유연한 두 번째 피연산자 참조).Rd
S를 지정하면 이러한 명령어는 다음을 수행합니다.
결과에 따라 N 및 Z 플래그를 업데이트합니다.
를
계산하는 동안 C 플래그를 업데이트할 수 있습니다(유연한 두 번째 피연산자 참조).Operand2
V 플래그를 변경하지 않습니다.
이러한 명령어의 다음 형식은 Thumb 코드에서 사용할 수 있으며, Thumb-2 코드에서 사용될 경우 16비트 명령어입니다.
MOVS Rd, imm는
Lo 레지스터여야 합니다. Rd 범위
0 ~ 255.imm
MOVS Rd, Rm 및 Rd은
모두 Lo 레지스터여야 합니다.Rm
MOV Rd, RmARMv5 이하에서는 또는 Rd 중
하나 이상이 Hi 레지스터여야 합니다. ARMv6 이상에서는 이 제한이 적용되지 않습니다.Rm
ARM 명령어의 # 형식은
ARMv6T2에서 사용할 수 있습니다. ARM 명령어의 다른 형식은 모든 버전의 ARM 아키텍처에서 사용할 수 있습니다.imm16
이러한 32비트 Thumb 명령어는 ARMv6T2와 ARMv7에서 사용할 수 있습니다.
이러한 16비트 Thumb 명령어는 ARM 아키텍처의 모든 T 변형에서 사용할 수 있습니다.