Skip to the content.

A

← 전체 목차로 돌아가기


ADC

Add with Carry Adds two operands plus the current carry flag (Xd = Xn + Xm + C). Used to chain addition across multiple registers for values wider than 64 bits, following an ADDS on the lower word.

캐리를 포함한 덧셈 두 피연산자와 현재 캐리 플래그를 함께 더합니다 (Xd = Xn + Xm + C). 64비트보다 큰 값을 여러 레지스터에 걸쳐 더할 때, 하위 워드의 ADDS 다음에 이어서 사용합니다.

Syntax

ADC <Wd|Xd>, <Wn|Xn>, <Wm|Xm>

Example

ADDS X0, X2, X4   // 하위 64비트 더하기 (캐리 플래그 갱신)
ADC  X1, X3, X5   // 상위 64비트 + 캐리 -> 128비트 덧셈 완성

🔗 Open Summary

🔗 adc.S 샘플

ADCS

Add with Carry, setting flags Same as ADC but also updates the NZCV flags, allowing the carry chain to continue into a further ADC/ADCS for even wider (192-bit+) arithmetic.

캐리를 포함한 덧셈 후 플래그 설정 ADC와 동일하지만 NZCV 플래그도 갱신하여, 더 넓은(192비트 이상) 연산을 위해 캐리 체인을 계속 이어갈 수 있습니다.

NZCV 레지스터 값으로 통째로 읽기

// 방법 1
// Move from System Register
// PSTATE의 NZCV 4비트를 범용 레지스터(X0) 에 통째로 복사 하는 명령
MRS x0, NZCV

// 방법 2
// 방금 플래그가 EQ 조건을 만족했으면 X0 = 1, 아니면 X0 = 0
CSET X0, EQ

Syntax

ADCS <Wd|Xd>, <Wn|Xn>, <Wm|Xm>

Example

ADCS X1, X3, X5

🔗 Open Summary

ADD

Add (register or immediate) Adds two operands and stores the result in the destination register.

덧셈 (레지스터 또는 즉시값) 두 피연산자를 더하여 결과를 대상 레지스터에 저장합니다.

Syntax

ADD <Wd|Xd>, <Wn|Xn>, <Wm|Xm>  or  ADD <Wd|Xd>, <Wn|Xn>, #<imm>

Example

ADD X0, X1, X2
ADD W0, W1, #5

🔗 Open Summary

ADDS

Add, setting flags. Same as ADD but also updates the NZCV condition flags based on the result. XZR as destination makes this the CMN alias (compare negative, result discarded).

덧셈 후 플래그 설정. ADD와 동일하게 더하지만, 결과에 따라 NZCV 조건 플래그도 함께 갱신합니다. 대상 레지스터를 XZR로 쓰면 결과를 버리는 CMN(음수 비교) 별칭이 됩니다.

Syntax

ADDS <Wd|Xd>, <Wn|Xn>, <Wm|Xm>  or  ADDS <Wd|Xd>, <Wn|Xn>, #<imm>

Example

ADDS X0, X1, X2
B.VS overflow_label   // 오버플로 발생시 분기

🔗 Open Summary

ADDV

Add across Vector. Sums every lane of a vector together into a single scalar result written to one lane of the destination. The classic horizontal-reduction step after a vectorized dot product.

벡터 전체 합산. 벡터의 모든 레인 값을 다 더해서 하나의 스칼라 결과로 만들어 대상 레인에 씁니다. 벡터화된 내적 계산 뒤에 흔히 오는 수평 축소(reduction) 단계입니다.

Syntax

ADDV <V><d>, <Vn>.<T>

Example

ADDV S0, V1.4S   // V1의 4개 레인 합계를 S0에

🔗 Open Summary

ADR

Form PC-relative address. Computes the exact byte address of a nearby label (within ±1MB) and writes it to the destination register. Unlike ADRP, no page offset is needed.

PC 상대 주소를 계산합니다. 가까운(±1MB 이내) 라벨의 정확한 바이트 주소를 구해 대상 레지스터에 저장합니다. ADRP와 달리 페이지 오프셋 계산이 필요 없습니다.

Syntax

ADR <Xd>, <label>

Example

ADR x0, local_data

🔗 Open Summary

ADRP

Form PC-relative address to a 4KB page. Computes the address of the 4KB page containing a label and writes it to the destination register; usually paired with ADD …@PAGEOFF or LDR to reach the exact byte.

4KB 페이지 단위의 PC 상대 주소를 계산합니다. 라벨이 속한 4KB 페이지의 시작 주소를 구해 대상 레지스터에 저장하며, 보통 정확한 바이트 주소를 얻기 위해 ADD …@PAGEOFF 또는 LDR과 함께 사용됩니다.

Syntax

ADRP <Xd>, <label>@PAGE

Example

ADRP x2, msg_bubble@PAGE
ADD x2, x2, msg_bubble@PAGEOFF

🔗 Open Summary

AESD

AES Single Round Decryption. Performs one round of AES decryption (the inverse operations of AESE) on a 128-bit block held in a vector register.

AES 단일 라운드 복호화. 벡터 레지스터에 담긴 128비트 블록에 대해 AESE의 역연산인 AES 복호화 한 라운드를 수행합니다.

Syntax

AESD <Vd>.16B, <Vn>.16B

Example

AESD V0.16B, V1.16B

🔗 Open Summary

AESE

AES Single Round Encryption. Performs one round of AES encryption on a 128-bit block held in a vector register, combining the AddRoundKey, SubBytes, and ShiftRows steps. Chained across multiple rounds (with AESMC between them) to implement full AES encryption without a software S-box lookup table.

AES 단일 라운드 암호화. 벡터 레지스터에 담긴 128비트 블록에 대해 AddRoundKey, SubBytes, ShiftRows 단계를 결합한 AES 암호화 한 라운드를 수행합니다. 여러 라운드에 걸쳐(사이사이 AESMC와 함께) 반복하면 소프트웨어 S-box 조회 테이블 없이 완전한 AES 암호화를 구현할 수 있습니다.

Syntax

AESE <Vd>.16B, <Vn>.16B

Example

AESE V0.16B, V1.16B

🔗 Open Summary

AESIMC

AES Inverse Mix Columns. Applies the inverse MixColumns transformation, used within AES decryption rounds alongside AESD.

AES 역 열 혼합. AES 복호화 라운드에서 AESD와 함께 사용되는, MixColumns의 역변환을 적용합니다.

Syntax

AESIMC <Vd>.16B, <Vn>.16B

Example

AESIMC V0.16B, V0.16B

🔗 Open Summary

AESMC

AES Mix Columns. Applies the MixColumns transformation of the AES encryption algorithm to a 128-bit block, typically applied after AESE within each encryption round.

AES 열 혼합. AES 암호화 알고리즘의 MixColumns 변환을 128비트 블록에 적용합니다. 보통 각 암호화 라운드에서 AESE 다음에 이어서 사용됩니다.

Syntax

AESMC <Vd>.16B, <Vn>.16B

Example

AESMC V0.16B, V0.16B

🔗 Open Summary

AND

Bitwise AND (register or immediate). ANDs two operands bit by bit and writes the result to the destination register.

비트 단위 AND(레지스터 또는 즉시값). 두 피연산자를 비트 단위로 AND 연산하여 결과를 대상 레지스터에 저장합니다.

Syntax

AND <Wd|Xd>, <Wn|Xn>, <Wm|Xm>  or  AND <Wd|Xd>, <Wn|Xn>, #<imm>

Example

AND X0, X1, X2
AND W0, W1, #0xF

🔗 Open Summary

ASR

Arithmetic Shift Right. Shifts the bits of a register right by a given amount, filling with the sign bit (preserves the sign for signed division-like operations).

산술 오른쪽 시프트. 레지스터의 비트를 지정한 만큼 오른쪽으로 이동시키되, 왼쪽은 부호 비트로 채웁니다(부호 있는 나눗셈과 유사한 연산에서 부호를 보존).

Syntax

ASR <Wd|Xd>, <Wn|Xn>, #<shift>  or  ASR <Wd|Xd>, <Wn|Xn>, <Wm|Xm>

Example

ASR X0, X1, #1     // X0 = X1 / 2 (signed)

🔗 Open Summary

AT

Address Translate operation. Runs a virtual address through the MMU’s translation tables (as configured for a given exception level/stage) without actually performing a memory access, and deposits the resulting physical address (or fault info) into PAR_EL1. Useful for debugging page-table setup or implementing a software page-table walker.

주소 변환 명령. 실제 메모리 접근 없이, 가상 주소를 지정한 예외 레벨/단계 기준의 변환 테이블에 통과시켜 그 결과(물리 주소 또는 폴트 정보)를 PAR_EL1에 기록합니다. 페이지 테이블 설정을 디버깅하거나 소프트웨어 페이지 테이블 워커를 구현할 때 유용합니다.

Syntax

AT <op>, <Xt>   // op: S1E1R, S1E1W, S1E0R, S1E0W ...

Example

AT S1E1R, X0      // X0의 가상주소를 EL1 stage 1 기준으로 변환 시도
MRS X1, PAR_EL1   // 결과 확인

Open Summary

AUTIASP

Authenticate Instruction address, key A, using SP. Verifies the signature embedded in X30 (that was added by PACIASP) using SP as the modifier, and strips it back to a plain address if valid. If the signature is invalid (return address was tampered with), the resulting address becomes corrupt and the following RET faults instead of jumping to attacker-controlled code.

명령어 주소 인증(키 A, SP 사용). PACIASP가 X30에 심어둔 서명을 SP를 변형값으로 검증하고, 유효하면 순수한 주소로 되돌립니다. 서명이 유효하지 않다면(복귀 주소가 변조됨) 결과 주소가 깨진 값이 되어, 뒤이은 RET이 공격자가 원하는 코드로 점프하는 대신 그대로 오류를 일으킵니다.

Syntax

AUTIASP

Example

AUTIASP               // 함수 에필로그, LDP x29,x30 복원 후 RET 직전에 삽입됨
RET
AUTIBSP

✅ Same as AUTIASP but verifies the key-B signature added by PACIBSP.

✅ AUTIASP와 동일하지만 PACIBSP가 심어둔 키 B 서명을 검증합니다.

Syntax

AUTIBSP

Example

AUTIBSP
RET