ISA와 어셈블리

어셈블리 언어와 기계어의 관계로 올바른 것은?

  1. A어셈블리 명령어는 어셈블러에 의해 거의 1대1로 기계어 명령어로 변환된다
  2. B어셈블리는 CPU 종류와 관계없이 공통이며 어떤 CPU에서도 그대로 동작한다
  3. C기계어는 어셈블리를 실행 시 한 줄씩 해석하는 인터프리터이다
정답과 해설 보기

정답: A. 어셈블리 명령어는 어셈블러에 의해 거의 1대1로 기계어 명령어로 변환된다

어셈블리 언어는 기계어 명령어를 'add a0, a0, a1'과 같은 사람이 읽을 수 있는 기호(니모닉)로 쓴 것이며, 어셈블러가 명령어의 비트열로 변환합니다. 명령어와 거의 1대1로 대응하므로 ISA가 다르면 어셈블리도 다릅니다. 다만 'li'나 'mv' 같은 의사 명령어는 어셈블러가 하나 이상의 실제 명령어로 치환합니다. 레이블을 주소로 바꾸는 것도 어셈블러의 일입니다.

이 분야 연습하기 분야로 돌아가기

ISA와 어셈블리의 다른 문제

  1. RISC-V의 의사 명령어 'nop'(아무것도 하지 않음)은 어셈블러에 의해 실제로 어떤 명령어로 치환되는가?
  2. RISC-V의 'add' 명령어와 'addi' 명령어의 차이로 올바른 것은?
  3. 위의 RISC-V 코드를 실행한 후 레지스터 a2의 값은 얼마인가?
  4. RISC-V 명령어 'lw t0, 8(sp)'의 동작으로 올바른 것은?
  5. RISC-V의 조건 분기 명령어 'beq a0, a1, label'에서 분기 대상 label의 주소는 어떻게 표현되는가?