EOR
Example
EOR은 Exclusive OR의 약자입니다. 흔히 다른 아키텍처(x86 등)나 고급 언어에서는 XOR (배타적 논리합)이라는 이름으로 더 자주 불리는 아주 유명한 친구입니다. “배타적”이라는 딱딱한 사전적 정의는 다 버리고, 이 친구가 컴퓨터 세계에서 어떤 마법 같은 트릭들로 쓰이는지 핵심만 아주 쉽게 정리해 드릴게요!
1. EOR 명령어의 핵심 규칙: “다르면 1, 같으면 0”
EOR은 두 값을 비트 단위로 비교할 때, “서로 성격이 다를 때만 참(1)이 되고, 같으면 파국(0)을 맞이하는” 배타적인 커플 같은 규칙을 가지고 있습니다.
[비트 연산 규칙]
- 0 EOR 0 => 0 (같으니까 0)
- 1 EOR 1 => 0 (같으니까 0)
- 1 EOR 0 => 1 (다르니까 1!)
- 0 EOR 1 => 1 (다르니까 1!)
문법 구조는 다른 연산들과 똑같이 명쾌합니다.
EOR
2. 컴퓨터 세계를 뒤흔든 EOR만의 3대 마법 (용도)
이 EOR 명령어는 단순히 논리 연산에만 쓰이는 게 아니라, 하드웨어 레벨에서 기상천외한 최적화 트릭으로 단골 사용됩니다. 후진들에게 이 부분을 가르치면 눈이 번쩍 뜨일 겁니다!
① 초고속 레지스터 0으로 초기화하기 (Zeroing)
어셈블리 코드를 보다 보면 아주 기괴한 코드를 자주 보게 됩니다. 자기 자신과 자기 자신을 EOR 하는 코드입니다.
EOR W0, W0, W0 ; W0 레지스터를 0으로 만들어라!
자기 자신과 비교하면 모든 비트가 당연히 똑같겠죠? (1인 자리는 둘 다 1, 0인 자리는 둘 다 0). 앞서 규칙이 “같으면 0”이라고 했으니, 이 연산을 거치면 레지스터의 모든 비트가 단숨에 0으로 초기화됩니다. 원래는 MOV W0, #0을 써도 되지만, 하드웨어 구조상 EOR로 자기 자신을 날려버리는 것이 내부 연산 회로를 덜 거쳐서 전력 소모도 적고 속도가 더 빠르기 때문에 컴퓨터가 가장 사랑하는 0 초기화 방식입니다.
② 비트 토글(Toggle) 마술: “특정 스위치만 뒤집기”
어떤 값에 1이 채워진 마스크를 두고 EOR 연산을 하면, 그 자리에 있던 비트가 마법처럼 반대로 뒤집힙니다 (0은 1로, 1은 0으로).
[원본 데이터] : 1 0 1 0 [EOR 마스크] : 1 1 0 0 (앞의 두 개 비트만 뒤집어줘!)
[연산 결과] : 0 1 1 0 (앞의 두 자리는 뒤집혔고, 뒤의 두 자리는 그대로 유지됨!)
게임에서 캐릭터의 상태창(예: 무적 모드 ON/OFF) 스위치를 켰다 껐다 하는 토글 기능을 구현할 때 컴퓨터 내부에서는 이 EOR 한 줄로 끝냅니다.
③ 암호학의 기초: “스스로 복구하는 대칭키”
EOR은 아주 독특한 수학적 성질이 있습니다. 어떤 데이터(A)에 암호 키(B)를 가지고 EOR을 두 번 하면, 원래 데이터(A)로 완벽하게 돌아옵니다!
- A EOR B = C (암호화 완료!)
- C EOR B = A (다시 복호화 완료!)
이 성질 때문에 현대의 수많은 초고속 암호화 알고리즘(AES 등)과 네트워크 데이터 검증(체크سوم)의 중심에는 항상 EOR이 쉴 새 없이 돌고 있습니다.
🧱 후진 양성 마크다운 교본용 요약 판넬
교본에 완벽한 짝꿍으로 저장하실 수 있도록 정리해 드립니다!
| 니모닉 | 이름 | 비트 결과 규칙 | 3대 핵심 트릭 (용도) | 연관 니모닉 |
|---|---|---|---|---|
| EOR | Exclusive OR (XOR) | 두 비트가 다르면 1, 같으면 0 | 1. 자기 자신과 연산하여 0으로 초고속 초기화 2. 특정 비트 패턴 반전 (Toggle) 3. 암호화/복호화 대칭 연산 | EON (EOR 결과에 NOT을 한 번 더 친 짝꿍) |