태그 : arm 요약보기전체보기목록닫기
- [Arm프로세서] AAPCS: Armv7: 함수를 호출하기 위한 디자인(0)2021.05.25
- [GDB] Arm(Armv7): C 코드와 어셈블리 코드를 동시에 디버깅하기!(0)2021.03.31
- [Arm프로세서] Armv8: VBAR_ELx 기준으로 익셉션 벡터 테이블 분석 정리(0)2021.02.08
- [Arm프로세서] Armv7: 익셉션이 발생한 명령어로 어떻게 복귀할까?(0)2020.12.21
- [ARM프로세서] ARMv7: 익셉션의 종류별 ARM 동작 모드 정리(0)2020.12.09
- [ARM프로세서] ARMv7: 소프트웨어 인터럽트 타입 익셉션을 유발할 때 ARM 코어의 세부 동작(0)2020.12.09
- [ARM프로세서] ARMv7: 인터럽트 타입 익셉션을 유발할 때 ARM 코어의 세부 동작(0)2020.12.03
- [ARM프로세서] ARMv7: Undefined Instruction 익셉션을 유발할 때의 ARM 코어의 세부 동작(0)2020.12.03
- [ARM프로세서] ARMv7: 데이터 어보트(Data Abort)를 유발할 때 ARM 코어의 세부 동작(0)2020.11.30
- [ARM프로세서] ARMv7: 프리페치 어보트(Prefetch Abort)가 발생할 때 ARM 코어의 세부 동작(0)2020.11.30
- Armv7: Calling Convention
- 2021/05/25 08:34
Armv7 아키텍처 관점으로 AAPCS를 보통 SP 레지스터와 LR 레지스터가 어떻게 바뀌는지 기준으로 설명합니다. 하지만 실제 거의 대부분 임베디드 혹은 시스템 개발자들은 SP와 LR 레지스터를 설정하는 어셈블리 코드를 입력하지 않습니다. 그 이유는 대부분 C 프로그래밍으로 코딩을 하기 때문입니다. SP와 LR 레지스터를 보면 낯설게 느끼기 마련입니다...
- [Debugging] Tips
- 2021/03/31 15:32
이번 포스트에서는 GDB를 사용해 디버깅을 하는 방법을 소개합니다. 소개된 내용을 참고하면 즐겁게 어셈블리 명령어를 디버깅할 수 있습니다.환경: 라즈베리 파이4GDB 실행아래 명령어를 사용해 GDB를 Text User Interface 모드로 실행합니다.$ gdb -tui armv7_aapcs_proc다음은 위 명령어로 실행한 화면입니다.이제 ...
- Armv8: 익셉션(Exception)
- 2021/02/08 21:33
이전 포스트까지 EL1에 존재하는 VBAR_EL1와 EL1에 있는 VBAR_EL2 기준으로 익셉션 벡터 테이블에 대해 알아봤습니다. 이제 원점으로 돌아가서 이번 절의 앞 부분에 소개한, Armv8 스팩 문서에 있는 익셉션 벡터 테이블을 보면서 배운 내용을 정리해봅시다.VBAR_EL1 기준으로 바라본 익셉션 벡터 테이블먼저 VBAR_EL1 기준으로 익셉션...
- Armv7: 익셉션(Exception)
- 2020/12/21 18:18
ARM 코어가 파이프 라인의 어느 단계에서 어떤 방식으로 익셉션을 유발하는지 알면, 자연히 익셉션이 발생한 다음 명령어로 복귀하는 방법도 알게 됩니다.다음 표를 보면서 이 내용을 정리해 봅시다. 표 8.3 익셉션의 종류 별로 익셉션이 발생한 순간으로 복귀하는 명령어 먼저, 표 8.3 2번째 줄에 있는 Undefined Instructi...
- Armv7: 익셉션(Exception)
- 2020/12/09 19:49
이전 절에서 배운 바와 같이, ARM 코어는 익셉션을 유발할 때 익셉션의 종류에 따라 ARM의 동작 모드를 변경합니다. 익셉션을 다른 관점으로 보면, 익셉션은 "ARM 동작 모드를 변경하는 유발 인자"라고 볼 수 있는데, 다음 표에서 익셉션의 종류 별로 변경되는 ARM 동작 모드를 확인할 수 있습니다.표 8.2 익셉션의 종류와 변경되는 ARM 동작 모드...
ARM 코어가 ‘svc’ 명령어를 실행하면 소프트웨어 인터럽트를 유발합니다. 다음 그림을 보면서, 소프트웨어 인터럽트가 발생할 때 ARM 코어의 세부 동작을 알아봅시다. 그림 8.11 소프트웨어 인터럽트를 유발할 때 변경되는 레지스터그림 8.11은 소프트웨어 인터럽트 익셉션이 실행되는 흐름을 나타내는데, 그림의 가운데 부분을 보면 ARM 코어가...
- Armv7: 익셉션(Exception)
- 2020/12/03 21:06
이어서 IRQ 익셉션이 발생하는 전체 흐름을 살펴보면서, 세부 동작을 알아봅시다. 그림 8.10 인터럽트 타입 익셉션을 유발할 때 변경되는 레지스터 그림 8.10은 IRQ 인터럽트 익셉션의 전체 실행 흐름을 나타내는데, 그림의 가운데 부분을 보면 ARM 코어가 하드웨어적으로 처리되는 부분이 슈도 코드로 표기돼 있습니다. 이어서 슈도 코...
- Armv7: 익셉션(Exception)
- 2020/12/03 21:05
이어서 Undefined Instruction 익셉션이 발생하는 전체 흐름을 살펴보면서, 세부 동작을 알아봅시다. 그림 8.9 Undefined Instruction 익셉션을 유발할 때 변경되는 레지스터 그림 8.9는 Undefined Instruction 익셉션의 전체 실행 흐름인데, 그림의 가운데 부분을 보면 ARM 코어가 하드웨어...
이어서 다음 그림을 보면서 데이터 어보트가 발생할 때 ARM 코어에서 이를 처리하는 세부 과정을 알아봅시다. 그림 8.8 데이터 어보트 익셉션을 유발할 때 변경되는 레지스터 ARM 코어가 데이터 어보트를 감지하면, 하드웨어적으로 레지스터를 어떻게 변경하는지, 그림의 가운데 부분에 보이는 슈도 코드를 분석하면서 알아...
- Armv7: 익셉션(Exception)
- 2020/11/30 22:26
프리패치 어보트가 발생하는 전체 흐름을 살펴보면서, 세부 동작을 알아봅시다. 그림 8.7 프리페치 어보트 익셉션을 유발할 때 변경되는 레지스터 그림 8.7은 8.2 절에서 봤던 그림과 비슷해 보입니다. 한 가지 차이점은 그림의 가운데 부분과 같이 ARM 프로세서 내부에서 처리되는 동작을 슈도 코드로 표현한 것입니다. 슈도 코드는 하드웨...
최근 덧글