ARMv8 AArch64 어셈블리 입문 가이드

C 코드를 gcc -S로 컴파일해 어셈블리 출력을 구경해본 적은 있어도, 처음부터 어셈블리만으로 프로그램을 짜서 빌드하고 실행해본 경험은 드물다. 하지만 커널의 부팅 초기 코드, 예외/인터럽트 벡터 핸들러, 컨텍스트 스위칭처럼 C로는 표현할…

Continue ReadingARMv8 AArch64 어셈블리 입문 가이드

GIST-Arm School 반도체 설계 교육 프로그램 총정리 – 무료 수강 신청 방법

반도체 설계 인력 부족이 산업계의 화두로 떠오른 가운데, GIST(광주과학기술원)가 글로벌 반도체 IP 기업 Arm과 손잡고 'GIST-Arm School 반도체 설계 교육 프로그램'을 본격 운영한다. 2025년 2월 체결된 MOU의 후속 조치로 시작된…

Continue ReadingGIST-Arm School 반도체 설계 교육 프로그램 총정리 – 무료 수강 신청 방법

ARM64 inline asm 포팅 가이드 (커널/Clang 포팅 관점)

ARM64(AArch64)에서 inline asm은 문법이 어렵다기보다, 컴파일러가 더 엄격하고 최적화가 더 공격적이라서 사고가 난다. 특히 벤더 커널을 Clang으로 옮길 때는 constraint 선택, clobber, barrier 세 가지가 대부분의 원인이다. 이 글에서는 ARM64에서…

Continue ReadingARM64 inline asm 포팅 가이드 (커널/Clang 포팅 관점)

AAPCS: Subroutine Calls (서브루틴 호출)

AAPCS를 따르는 Arm 아키텍처에서는 서브루틴 호출을 위한 명령어를 사용하여 함수를 호출하고 복귀하는 방식을 취한다. 서브루틴 호출 명령어 Arm 명령어 세트에는 링크 포함 분기 작업을 수행하는 기본 서브루틴 호출 명령어 인…

Continue ReadingAAPCS: Subroutine Calls (서브루틴 호출)

AAPCS 소개

AAPCS(Procedure Call Standard for ARM Architecture)는 ARM 아키텍처에서 사용되는 응용 프로그램 바이너리 인터페이스이다. ARM 아키텍처에 대한 전체 ABI 사양의 일부를 구성한다. 설계 목표 AAPCS의 설계 목표는 다음과 같다. Thumb-state 와…

Continue ReadingAAPCS 소개

AAPCS와 EABI의 관계

AAPCS(Arm Architecture Procedure Call Standard)와 EABI(Embedded Application Binary Interface)는 ARM 아키텍처 기반의 시스템에서 사용되는 응용 프로그램 바이너리 인터페이스의 다른 측면을 나타낸다. 이 둘은 서로 밀접하게 관련되어 있으며, 아래에서 그 관계를…

Continue ReadingAAPCS와 EABI의 관계