[Arm프로세서] 레지스터를 배우기 어려운 이유
By Guillermo Austin Kim | 2022년 2월 27일 |
CPU 아키텍처를 배울 때 가장 먼저 레지스터를 접합니다. CPU를 설정하거나 CPU의 속성 정보를 레지스터가 담고 있기 때문입니다. Arm 아키텍처에서 정의된 레지스터를 설명하기 전에 레지스터를 소개합니다. 레지스터를 배우기 어려운 이유 CPU 아키텍처를 처음 배울 때 가장 먼저 무엇을 배울까요? 레지스터를 공부할 가능성이 높습니다. 그런데 Arm 아키텍처나 Arm 프로그래밍을 다루는 대부분의 책은 레지스터의 기능을 상세히 다룹니다. 예를 듭시다. Armv7 아키텍처에서 정의된 레지스터는 범용 레지스터와 CP15 레지스터로 구성된다. R13은 스택 포인터 레지스터, R14는 링크 레지스터이다. 이런 내용을 읽고 대부분 레지스터가 너무 어렵다고 느낍니다. 저도 처음 Arm 어셈블리를 배울 때
ARM 맥 DTK(Developer Transition Kit) 신청 완료 및 기대
By being nice to me | 2020년 6월 23일 |
...는 제가 아니라 제가 얘기해서 회사가... DTK는 맥미니의 외양을 가진 ARM 맥 개발용 프로토타입이죠.사양은 A12Z, 16GB(!), 512GB SSD 랍니다. 다음주쯤에 받아볼 수 있지 않을까 싶군요. 과연 어느정도일지 궁금합니다. 뉴질랜드 락다운 기간동안 맥미니 2020(i5 8세대 헥사코어)을 사용했는데 별로 좋은 사용자 경험은 아니었습니다. 가격에 비해 밸런스가 안맞는다는 느낌이 좀 들었습니다. 특히 인텔 그래픽 감속기(...)의 효과를 톡톡히 봤는데 4K모니터를 내부 해상도는 5K로 그리고 FHD모니터를 보조로 붙이니 그래픽쪽에서 영 별로인 성능이 나오더라구요. 그래픽 작업이 아니라 그냥 엑스포제같은 일반적인 윈도우 작업이나 유투브도 버벅대고...AMD 그래픽 카드가 내장된 맥북
[ARM프로세서] 익셉션(Exception)과 관련된 레지스터
By Guillermo Austin Kim | 2020년 10월 23일 |
실전 SW 개발자 입장에서 익셉션이 발생했을 때 확인해야 할 가장 중요한 정보는 레지스터입니다. ARM 프로세서는 익셉션을 감지하면 레지스터에 익셉션과 관련된 정보를 업데이트하기 때문입니다. 그렇다면 레지스터를 통해 SW 개발자는 어떤 정보를 얻을 수 있을까요? 먼저, 익셉션이 발생했을 때 실행된 명령어의 정확한 주소를 확인할 수 있습니다. ARMv7 아키텍처에서는 r14_<mode> 레지스터, ARMv8에서는 ELR_ELx 레지스터에 익셉션이 발생한 주소를 저장합니다. 이 정보를 참고로 함수의 호출 흐름까지 파악할 수 있습니다. 만약 익셉션의 타입이 메모리 어보트이면 레지스터 정보를 참고로 정확히 어떤 이유로 익셉션이 발생했는지 디버깅할 수 있습니다. 이 밖에도 ARMv7와 ARMv8 아키
[Arm프로세서] AAPCS: Armv8: 스택과 관련된 명령어 - ldp
By Guillermo Austin Kim | 2021년 8월 11일 |
Armv7 아키텍처에서 push 명령어를 실행한 후 함수가 종료되기 직전에 반드시 실행되는 명령어가 pop입니다. 마찬가지로 Armv8 아키텍처에서 stp 명령어를 사용해 스택에 레지스터를 푸시한 후, 함수를 종료하기 직전에 실행되는 명령어는 ldp입니다. Arm 스팩 문서에서 ldp 명령어 분석하기 이번에도 Arm 스팩 문서를 보면서 ldp 명령어에 대해 살펴봅시다. C6.2.129 LDPLoad Pair of Registers calculates an address from a base register value and an immediate offset, loads two 32-bit words or two 64-bit doublewords from memory, and writes them