ISA와 어셈블리

ABI(애플리케이션 바이너리 인터페이스)에 대한 설명으로 올바른 것은?

  1. A소스 코드 수준에서 함수 이름과 인자 타입을 정한 약속
  2. BCPU 명령어의 종류와 비트 배열만을 정한 약속
  3. C호출 규약이나 데이터형의 크기·정렬 등, 기계어 수준에서 프로그램끼리 연결하기 위한 약속
정답과 해설 보기

정답: C. 호출 규약이나 데이터형의 크기·정렬 등, 기계어 수준에서 프로그램끼리 연결하기 위한 약속

ABI는 컴파일된 프로그램이나 라이브러리가 함께 동작하기 위한 기계어 수준의 약속으로, 호출 규약, int·long·포인터의 크기, 구조체 정렬, 시스템 콜 호출 방법 등을 포함합니다. API는 소스 코드에서 함수 사용법을 정하는 것이며, API가 같아도 ABI가 다르면 다시 빌드하지 않는 한 라이브러리를 사용할 수 없습니다. 같은 RISC-V ISA라도 OS나 용도에 따라 ABI가 다를 수 있습니다.

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

ISA와 어셈블리의 다른 문제

  1. C 언어의 함수 포인터를 사용한 호출 '(*fp)(x)'는 RISC-V에서 일반적으로 어떤 명령어로 이루어지는가?
  2. 동일한 명령어 집합 아키텍처(ISA)를 채택한 두 CPU에 대해 올바른 것은?
  3. RISC-V와 같은 로드-스토어 아키텍처의 특징으로 올바른 것은?
  4. RISC-V의 레지스터 x0(zero)의 성질로 올바른 것은?
  5. RISC-V의 RV32I(32비트 기본 정수 명령어 집합)가 가진 범용 정수 레지스터로 올바른 것은?