Arm 어셈블리 명령어를 공부하면서 #는 숫자를 표현하는 방식이라고만 이해했는데, 깊게 들어가니 즉치값이라는 키워드가 나왔고, 이 부분이 속도 향상과도 연관이 되는 듯 하여 더 자세히 알아보았다.
출처를 보니, immediate values(operand)를 이렇게 정의한다.
Immediate Operands
An immediate operand in computer science refers to a data value encoded within an instruction itself, used for operations like loading registers. It has a maximum value that varies among instructions but is limited to 2^32 in general.
다시말해, immediate value(즉치값)는 레지스터나 메모리에서 값을 가져오는게 아니라, 기계어 자체에에 인코딩된 값을 의미한다. CPU입장에선 별도의 주소를 찾아가거나 메모리에서 데이터를 읽을 필요 없이, 명령어를 decode 하는 즉시 값을 알 수 있어 속도가 매우 빠르다.
참고로 32bit Arm 아키텍처의 경우, 즉치값을 위해 할당된 공간 크기가 12bit인데, 8비트 상수를 4비트 '회전값'으로 비트이동시켜서 총 32비트 상수들을 인코딩하는 방식을 사용한다. 이 방식의 한계는 아무래도 연속된 8비트 값(예를 들면 0001_1111_1110_0000)이 아닌 값(1000_0000_1111_1111)을 표현할 수 없다는 점이다(출처).
결론!
즉치값은 기계어에 매핑된 상수값으로, 레지스터나 메모리에 저장된 값을 불러오는 것 보다 훨씬 빠르게 상수값을 연산하기 위한 트릭이다.
'Embedded Systems > Arm 아키텍처' 카테고리의 다른 글
| [Arm] 익셉션에 대해 공부해보자! (0) | 2026.04.02 |
|---|---|
| [ARM] Armv7의 Processor Mode(동작 모드) + 조금의 익셉션 (0) | 2026.03.26 |
| [ARM] Arm 아키텍처의 메모리모델 - 노멀 메모리, 디바이스 메모리 (0) | 2026.03.24 |
| [ARM] 익셉션? 너는 누구니? (0) | 2026.03.17 |