Guillermo Austin Kim

Sources

Posts

998 posts

[ARM] 함수 호출 규약(Calling Convention)이란

Guillermo Austin Kim|2020년 9월 27일

호출 규약(Calling Convention)이란 무엇일까요? 어떤 함수를 호출했을 때 서브 루틴이 자신을 호출하는 함수로부터 인자를 어떤 방식으로 받아 결과를 반환하는지에 대한 규약입니다. x86, RISC-V와 같은 CPU 아키텍처마다 함수 호출 규약(Calling Convention)을 정의하는데, ARM 프로세서에서는 이를 AAPCS(Procedure Call Standard for ARM Architecture)라고 명시합니다. 앞으로, AAPCS를 함수 호출 규약이라고 명시하겠습니다. 연산을 수행하는 ARM 어셈블리 명령어에서 레지스터는 연산의 결과를 임시로 저장하는 역할에 그칩니다. 그래서 각각 레지스터의 역할을 세세하게 배울 필요가 없는데요. 함수 호출 규약을 배울 때는 다릅니다. 그것은 다

[RISC-V] 익셉션 벡터 핸들러 코드 산책 - 리눅스 커널

Guillermo Austin Kim|2020년 9월 27일

이번 시간에는 RISC-V 기반 리눅스 커널에 구현된 익셉션 벡터 테이블과 익셉션 벡터 핸들러를 분석하겠습니다. 익셉션 벡터 핸들러를 호출하는 코드 확인하기 다음은 익셉션 벡터 핸들러의 구현부입니다. RISCV_PTR do_trap_insn_misaligned RISCV_PTR do_trap_insn_fault RISCV_PTR do_trap_insn_illegal RISCV_PTR do_trap_break RISCV_PTR do_trap_load_misaligned RISCV_PTR do_trap_load_fault RISCV_PTR do_trap_store_misaligned RISCV_PTR do_trap_store_fault RISCV_PTR do_trap_ecall_u /* system cal

[ARM] ARMv7: ARM 동작 모드란

Guillermo Austin Kim|2020년 9월 26일

ARM 아키텍처 문서를 보면 가장 먼저 보이는 용어가 ARM 동작 모드입니다. ARM 아키텍처를 이해하기 위해 꼭 알아야 하는 개념이니 자주 보면서 익혔으면 합니다. ARM 동작 모드를 잘 배워야 시스템을 디자인하거나 디버깅을 할 때 유용하게 활용할 수 있습니다. User 모드를 시작으로 각각 동작 모드에 대해 소개하겠습니다. User 모드 휴대폰에서 사용하는 브라우저, 카카오톡와 같은 애플리케이션이 구동되는 모드입니다. 라즈베리 파이에서 다음과 같은 유저 애플리케이션 코드를 빌드해 애플리케이션을 동작하는 모드입니다. #include int main() { printf("hello, world\n"); return 0;} 유저 모드에서 실행되는 코드는 메

[ARM] ARMv8 아키텍처의 레지스터

Guillermo Austin Kim|2020년 9월 25일

이번에는 ARMv8 아키텍처의 64비트 명령어 기준으로 레지스터 세트에 대해 알아봅시다. 다음은 ARM 스팩 문서에서 발췌한 내용입니다. 출처: DDI0487A_g_armv8_arm.pdfB1.2.1 Registers in AArch64 state In the AArch64 application level view, an ARM processing element has:R0-R30 31 general-purpose registers, R0 to R30. Each register can be accessed as: • A 64-bit general-purpose register named X0 to X30. • A 32-bit general-purpose register named W0 to W30.

[ARM] ARMv7 아키텍처의 레지스터

Guillermo Austin Kim|2020년 9월 25일

ARMv7 아키텍처에서 사용되는 레지스터는 범용과 특별 용도 레지스터로 구분할 수 있습니다. 먼저 범용 레지스터에 대해 살펴봅시다. 다음은 ARM 스팩 문서에서 발췌한 내용입니다. 출처: DDI0406C_arm_architecture_reference_manual.pdf A2.3 ARM core registers In the application-level view, an ARM processor has:• thirteen general-purpose 32-bit registers, R0 to R12• three 32-bit registers with special uses, SP, LR, and PC, that can be described as R13 to R15. 위 내용은 "R0~R12