나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2024-01-13 22:09:23

ARMv8-A/명령어 목록


명령어 집합
CISC AMD64x86 · M68K · 68xx · Z80 · 8080 · MOS 65xx · VAX
RISC AArch64 ARM · RISC-V · MIPS · DEC Alpha · POWER PowerPC · CELL-BE
LoongArch · OpenRISC · PA-RISC · SPARC · Blackfin · SuperH · AVR32 AVR
VLIW
EPIC
E2K · IA-64 · Crusoe

1. 개요
1.1. 약어 설명1.2. 표기법1.3. 명령어 인코딩1.4. 레지스터
1.4.1. 정수 레지스터1.4.2. 부동소수점/벡터 레지스터1.4.3. 특수 레지스터
2. 명령어 목록
2.1. 데이터 처리 (레지스터) 명령어2.2. 데이터 처리 (Immediate) 명령어2.3. Load/Store 명령어
2.3.1. Load register (literal)
2.4. 분기 및 제어 명령어

[clearfix]

1. 개요

ARMv8-A 아키텍처의 명령어 목록.

1.1. 약어 설명

1.2. 표기법

1.3. 명령어 인코딩

ARMv8-A ISA에서 명령어는 32-bit 길이로 인코딩되며, MIPS 및 RISC-V 등의 다른 RISC ISA에 비해 명령어 인코딩이 복잡한 편이다.

1.4. 레지스터

ARMv8-A ISA에서는 정수 레지스터 31개, 부동소수점 레지스터 32개 및 SP(stack pointer), PC(program counter) 등을 정의한다.

1.4.1. 정수 레지스터

레지스터 번호는 5 bit로 인코딩되며, 0-30은 레지스터 R0-R30, 31(0b11111)은 상수 0인 ZR(zero register)를 의미한다.

1.4.2. 부동소수점/벡터 레지스터

부동소수점/벡터 레지스터는 V0-V31로 표기한다.

1.4.3. 특수 레지스터

2. 명령어 목록

명령어 분류는 ARMv8-A 레퍼런스 매뉴얼을 따른다. (단, 서술 순서는 다를 수 있다.)

2.1. 데이터 처리 (레지스터) 명령어

====# 세부 인코딩 #====

2.2. 데이터 처리 (Immediate) 명령어

명령어 mnemonic op0 op/opc S 비고
ADR 00x 0 -
ADRP 00x 1 -
ADD 01x 0 0 sf로 32-bit/64-bit 지정
ADDS 01x 0 1 sf로 32-bit/64-bit 지정
SUB 01x 1 0 sf로 32-bit/64-bit 지정
SUBS 01x 1 1 sf로 32-bit/64-bit 지정
AND 100 00 - sf로 32-bit/64-bit 지정
ORR 100 01 - sf로 32-bit/64-bit 지정
EOR 100 10 - sf로 32-bit/64-bit 지정
ANDS 100 11 - sf로 32-bit/64-bit 지정
MOVN 101 00 - sf로 32-bit/64-bit 지정
MOVZ 101 10 - sf로 32-bit/64-bit 지정
MOVK 101 11 - sf로 32-bit/64-bit 지정
====# 세부 인코딩 #====

2.3. Load/Store 명령어

2.3.1. Load register (literal)

명령어 mnemonic opc V 비고
LDR 00 0 32-bit
LDR 01 0 64-bit
LDRSW 10 0
PRFM 10 0
====# 세부 인코딩 #====

2.4. 분기 및 제어 명령어

====# 세부 인코딩 #====