[Arm프로세서] AAPCS: Armv8: 서브 루틴(함수)로 분기될 때 실행되는 어셈블리 명령어
By Guillermo Austin Kim | 2021년 7월 26일 |
arm 아키텍처의 세부 동작을 제대로 파악하려면, 해당 Arm 아키텍처에서 지원하는 어셈블리 명령어를 배워야 합니다. 이는 Armv8 아키텍처의 AAPCS64에도 마찬가지로 적용될 수 있습니다. 이번 절에서는 Armv8 아키텍처의 AAPCS64와 연관된 명령어를 소개합니다. AAPCS와 연관된 명령어의 목록은 다음과 같습니다. 표 7.4 Armv8 아키텍처에서 사용되는 AAPCS와 관련된 명령어 위 표에서 보이는 각 명령어를 소개하고 예제 코드를 분석하면서, 명령어의 동작 원리를 배워봅시다. Written by <디버깅을 통해 배우는 리눅스 커널의 구조와 원리> 저자
[ARM] ARM 프로세서의 특징을 활용한 최적화는 왜 중요할까?
By Guillermo Austin Kim | 2020년 7월 4일 |
이번 포스팅에서는 'ARM 프로세서의 특징을 활용한 최적화는 왜 중요할까?'에 대해서 이야기하려고 합니다.본론에 들어가기 앞서 일반적인 SW 개발자들이 최적화에 대해 어떻게 생각하는지 짚어 보겠습니다. 생각보다 성능과 최적화는 중요하다 대부분 SW 개발자들은 주어진 스팩을 구현하기 위해 프로그램을 작성합니다. 화면을 꾸미는 프론트 엔드 개발자들은 화면이 제대로 구성됐는지, 메뉴나 폰트가 제대로 보이는 지 체크를 합니다. 네트워크 개발자들은 데이터 패킷이 제대로 전달이 됐는지 테스트를 할 것입니다. 프로그래머는 주로 주어진 스팩을 만족하면서 버그가 없도록 프로그래밍을 합니다. 하지만 프로그램이 스팩 내에서 올바르게 실행되도록 결함을 찾아 다듬는 것만으로는 충분하지 않을 수 있습니다. 고객이 사용
[라즈베리파이] 시스템 콜 - 소프트웨어 인터럽트란
By Guillermo Austin Kim | 2018년 11월 8일 |
소프트웨어 인터럽트를 한 문장으로 정의해 봅시다. 소프트웨어 인터럽트는 인터럽트가 아닙니다. 인터럽트는 하드웨어서 올려주는 전기 신호로 언제 발생할지 모르는 비동기적인 이벤트이나 통지입니다. 그런데 소프트웨어 인터럽트는 ARM 프로세서에서 제공하는 “svc” 어셈블리 명령어를 실행하면 동작합니다. 소프트웨어 인터럽트를 발생하는 주체는 소프트웨어 관점으로 프로세스입니다. 소프트웨어 인터럽트란 용어의 인터럽트는 하드웨어 디바이스에서 비동기적으로 전달하는 신호는 아닙니다. 실제 인터럽트가 발생하면 ARM 프로세서는 인터럽트를 익셉션의 한 종류로 처리합니다. 리눅스 커널에서 다음은 같이 동작합니다.1. 익셉션 발생(인터럽트는 비동기적인 신호)2. 익셉션 벡터로 ARM 프로그램 카운터를 이동3. 익셉션 벡터에서
[ARM] ARM 프로세서의 역사
By Guillermo Austin Kim | 2020년 9월 17일 |
ARM은 회사 이름이기도 하고 x86와 같은 CPU 아키텍처의 이름입니다. 이번 절에서는 ARM의 역사에 대해 소개합니다. ARM사는 에이콘에서 유래됐는데요. 아래 순서로 ARM의 역사에 대해서 살펴보겠습니다. ● 에이콘의 설립 ● 조인트 벤처로 ARM사의 탄생 ● 2010년 모바일 시장 석권 에이콘의 설립 1978년 영국 캠브리지에서 크리스 커리와 헤르만 하우저가 에이콘 컴퓨터라는 회사를 세웁니다. 마이크로프로세서 기반의 시스템을 개발하는 것이 주된 미션인데 6502 프로세서를 탑재해 컴퓨터 시스템을 개발합니다. '에이콘'사는 컴퓨터 제품을 꾸준히 개발했는데, 1983년 'BBC 마이크로'란 프로젝트로 '에이콘'은 입지를 다지게 됩니다. 'BBC 마이크