ISA와 어셈블리
RISC-V 명령어 'lw t0, 8(sp)'의 동작으로 올바른 것은?
- At0의 값을 sp에 8을 더한 주소에 4바이트 쓴다
- Bsp의 값에 8을 더한 주소에서 4바이트를 읽어 t0에 넣는다
- Csp의 값을 8배한 주소에서 4바이트를 읽어 t0에 넣는다
정답과 해설 보기
정답: B. sp의 값에 8을 더한 주소에서 4바이트를 읽어 t0에 넣는다
lw는 load word의 약자로 32비트(4바이트)를 메모리에서 읽어 들이는 명령어입니다. '8(sp)'는 sp의 값을 베이스로 하여 8을 더한 주소를 나타내며, 이러한 주소 지정 방식을 베이스 상대(레지스터 간접+오프셋)라고 합니다. 스택 상의 변수나 구조체 멤버에 베이스로부터 일정한 거리로 접근하는 데 편리합니다. 반대로 레지스터의 값을 메모리에 쓰는 것이 sw(store word)입니다.