Skip to the content.

FABS, FADD, FCMP

Example

FABS, FADD, FCMP는 일반 정수 명령어(ABS, ADD, CMP) 앞에 Floating-Point를 뜻하는 F가 붙은 형태입니다. 정수 연산과 부동소수점 연산은 “아예 일하는 공장(연산 장치)과 규칙이 완전히 다른 별개의 세상”입니다.


💡 0. 무대가 다르다: FPU와 전용 레지스터 (S, D 레지스터)

가장 먼저 교본에 박아 넣어야 할 핵심 차이는 “사용하는 레지스터와 실행 장치”가 다르다는 점입니다.


FABS

Floating-point Absolute value (부동소수점 절댓값)

FABS S0, S1 ; S1에 든 소수의 부호 비트를 0으로 만들어(양수화) S0에 저장!


FADD

Floating-point Add (부동소수점 덧셈)

  1. 지수 맞추기 (Alignment): 두 소수의 소수점 위치를 똑같이 맞추기 위해 한쪽 숫자를 옆으로 밀어줍니다. 2. 가수부 덧셈 (Fraction Addition): 소수점 자리가 맞은 상태에서 실제 알맹이 숫자들을 더합니다. 3. 정규화 (Normalization): 더한 결과값을 다시 표준 규격(예: $1.xxxx \times 2^y$) 형태로 소수점 위치를 예쁘게 재조정합니다. 4. 반올림 (Rounding): 레지스터 크기(32비트 또는 64비트)를 넘어가서 잘리는 소수점 아래 무한 소수들을 반올림 규칙에 따라 정밀하게 다듬습니다.

이처럼 FADD는 정수 ADD와 겉보기엔 같아 보여도, 보이지 않는 곳에서 하드웨어가 엄청난 정밀 제어를 수행하는 복잡한 명령어입니다.

FCMP

Floating-point Compare (부동소수점 비교)

FCMP S0, S1 ; S0과 S1 두 소수를 비교 (NaN 상태까지 정밀 검사!)


🧱 후진 양성 마크다운 교본용: 정수 vs 부동소수점 전격 비교 판넬

후배들이 두 세계의 본질적인 차이를 한눈에 관통할 수 있도록 정갈하게 비교 표를 선물해 드립니다!

항목 정수 명령어 (ABS, ADD, CMP) 부동소수점 명령어 (FABS, FADD, FCMP) 후진들을 위한 선배의 한마디 포인트
작동 무대 일반 ALU (산술논리연산장치) FPU (부동소수점 전용 연산장치) “일하는 부서와 도구(레지스터)가 완전히 다르다!”
사용 레지스터 Wn (32비트), Xn (64비트) Sn (32비트 float), Dn (64비트 double) “소수점 전용 서랍장을 사용해야 한다!”
절댓값 (FABS) 비교 후 부호 반전 연산 필요 (CNEG) 오직 부호 비트를 0으로 바꾸는 비트 마스크 “수학 계산이 아니라 단순한 스위치 조작이다!”
덧셈 (FADD) 단순 이진수 자리올림 덧셈 소수점 정렬 ➡️ 덧셈 ➡️ 정규화 ➡️ 반올림 “정밀도를 지키기 위한 하드웨어 4단계 공장이다!”
비교 (FCMP) 단순 뺄셈을 통한 크기 비교 크기 비교 + NaN (숫자가 아님) 유무 정밀 검사 “미스터리한 값(NaN)까지 잡아내는 안전망이다!”