ISA와 어셈블리
a0에 int형(4바이트) 배열 a의 시작 주소, a1에 첨자 i가 들어 있다. 위의 코드가 a2에 읽어 들이는 것으로 올바른 것은?
slli t0, a1, 2
add t0, a0, t0
lw a2, 0(t0)
- Aa[4*i]의 값
- Ba[i]의 주소
- Ca[i]의 값
정답과 해설 보기
정답: C. a[i]의 값
1행에서 i를 2비트 왼쪽으로 시프트하여 4×i를 만들고, 2행에서 배열의 시작 주소에 더해 a[i]의 주소를 구하며, 3행에서 그 주소로부터 4바이트를 읽고 있습니다. int형은 한 요소가 4바이트이므로 i번째 요소는 시작에서 4×i 바이트 앞에 있습니다. C 언어의 'a[i]'는 컴파일러에 의해 이러한 주소 계산과 로드로 번역됩니다.