시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리/어셈블리 명령어
[Arm] MVN 어셈블리 명령어 (Armv7-A, Armv8-A)
AustinKim
2025. 9. 16. 21:00
MVN은 데이터에 ~ 연산(NOT)을 수행한 결과를 레지스터에 이동하는 명령어입니다. 다음 그림을 보면서 MVN 명령어를 배워 봅시다.

MVN 명령어는 그림과 같이 ~#imm으로 지정된 상수 값을 목적 레지스터인 <Rd>에 저장하는 동작입니다. 여기서 '~' 는 '0으로 된 비트를 1' 혹은 '1로 설정된 비트를 0'으로 바꿔주는 연산자입니다.
그렇다면 다음 mvn 명령어는 어떻게 해석할 수 있을까요?
mvn r0, #7
먼저 7에 대해 ~ 연산을 수행하면 결과값은 0xffff_fff8입니다. ~7의 연산 결과인 0xffff_fff8이 r0 레지스터로 이동합니다.
이처럼 MVN은 이동하려는 상수에 ~연산을 한 결과를 목적 레지스터에 저장하는 명령어입니다.