어셈블러에서

elanion의 이미지

어셈블 할 때 boundary alignment를 하는 이유가 무엇인가요?

aqwerf의 이미지

주로 속도죠.
ARM 등 몇몇 CPU를 빼고는 동작상의 큰차이는 없습니다.

예를 들어
- 32bit cpu, 32bit memory를 사용
- 32bit align되지 않은 memory에서 32bit data를 읽는 경우

예를 들어 x86계열이라면
mov [1001h], ax
처럼 하면 실제로 cpu는
- 1000h에서 memory read
- 1003h에서 memory read
- 두개를 잘 조합해서 1001h~1004h 값 만들기
처럼 align이 안되면 복잡한 과정을 수행하게 됩니다.

이외에도 cache, page align을 하여야 하는 경우도 있구요.

Necromancer의 이미지

risc계열 cpu의 경우 대부분 명령어셋 구조 자체가 non-alignment 메모리 접근을 아예 하지
못하도록 되어 있습니다.

Written By the Black Knight of Destruction