mov R0, #7 // R0 = 7
mvn R0, #7 // R0 = ~7 (0xFFFF_FFF8)
ADD R0, R1, #8 // R0 = R1 + 8
ADC R0, R1, #8 // R1 = 0x2000 -> R0 = 0x2000 + 0x8 + 1(carry)
SUB R0, R1, #8 // R0 = R1 - 8
SBC R0, R1, #8 // R1 = 0x2000 -> R0 = 0x2000 - 0x8 - 0(~carry)
RSB R0, R1, #8 // R0 = 8 - R1
RSC R0, R1, #8 // R1 = 0x2000 -> R1 = 0x8 - 0x2000 - 0(~carry)
LSL R0, R1, #2 // R0 = R1 << 2
LSR R0, R1, #2 // RO = R1 >> 2
ASR R0, R1, #2 // R0 = R1 >>> 2
ROR R0, R1, #2 // RO = right rotate R0 for twice
AND R0, R0, #0X123 // R0 = R0 & #x123
ORR R0, R0, #0X123 // R0 = R0 | 0x123
ORN R0, R0, #0X123 // R0 = R0 | ~0x123
EOR R0, R0, #0X123 // R0 = R0 ^ 0x123
BIC R0, R0, #0X123 // R0 = R0 & ~0x123
메모리에 있는 데이터를 레지스터에 저장
LDR R0, [R1] // R0 = MEM[R1]
LDR R0, [R1, #8] // R0 = MEM[R1 + 8]
메모리에 있는 데이터를 레지스터에 저장
STR R0, [R1] // MEM[R1] = R0
STR R0, [R1, #8] // MEM[R1 + 8] = R0
CPSR.{N, Z, C, V}를 설정
CPSR.{N, Z, C, V}에 따라 동작 수행 여부 결정
PSTATE.{N, C, C, V}에 따라 분기 여부 결정
Condition Code 참조
CBZ Rt, <label>: Rt == 0이면 <label>로 분기, 아니면 PC+4로 이동
CBNZ Rt, <label>: Rt != 0이면 <label>로 분기, 아니면 PC+4로 이동
TBZ Rt, bit, <label>: Rt[bit] == 0이면 <label>로 분기, 아니면 PC+4로 이동
TBNZ Rt, bit, <label>: Rt[bit] != 0이면 <label>로 분기, 아니면 PC+4로 이동
user application에서 kernel로 진입 (system call)
kernel에서 hypervisor로 진입
trust zone에서 활용되며, non-secure world와 secure world의 스위칭 시 사용
MSR CPSR_c R0
MSR SPSR_fsxc R0