[Arm프로세서] Armv8: 스페셜 레지스터
By Guillermo Austin Kim | 2022년 4월 28일 |
그런데 Armv8에서는 익셉션 레벨 별로 사용되는 레지스터가 있는데 이를 스페셜 레지스터라고 합니다. 그 목록은 다음 그림과 같습니다. 그림 2.4 Armv8(Aarch64) 아키텍처의 스페셜 레지스터 목록 Armv7 에서는 각 동작 모드 별로 r13_<mode>/r14_<mode>와 같이 뱅크드된 레지스터가 있듯이, Armv8은 익셉션 레벨 별로 사용되는 레지스터가 있습니다. 이를 스페셜 레지스터라고 합니다. SP_ELx 레지스터 이 중에서 먼저 SP_EL0을 알아봅시다. SP_EL0은 EL0(익셉션 레벨 0)에서 실행되는 프로세스의 스택 Top 주소를 가리킵니다. 그렇다면 SP_EL1은 어느 익셉션 레벨에서 사용되는 레지스터일까요? SP_EL1은 EL1(익셉션 레벨 1)
[Arm프로세서] AAPCS: Armv7: 함수 반환형은 워드 단위로 지정
By Guillermo Austin Kim | 2021년 7월 5일 |
함수를 반환하는 자료형은 워드 단위로 제한하는 것이 좋습니다. 워드형인 경우 반환값은 R0 레지스터에 저장하나, 데이터가 워드 범위를 벗어난 경우 R0와 R1레지스터에 반환값을 나눠서 처리하기 때문입니다. [정보]위에서 언급한 워드형이 무엇인지 알아봅시다. 워드(word)는 어셈블리 명령어로 연산 결과를 레지스터에 저장할 수 있는 데이터 단위입니다. 그렇다면 함수가 반환하는 타입이 무엇인지 파악하려면, 함수 선언부의 가장 앞 부분을 보면 됩니다. 예를 들어 이번 소절에서 소개한 add_func() 함수는 int 형의 인자를 반환합니다. int add_func(int a, int b, int c, int d, int e); 대부분 함수가 반환하는 자료형은 워드 타입으로, int, unsinged int
애플이 진짜 인텔을 버리고 ARM으로 간다(WWDC 2020)
By 자그니 블로그 : 거리로 나가자, 키스를 하자 | 2020년 6월 9일 |
올해 나온 맥북 에어를 친구에게 추천할 수 없었던, 가장 큰 이유가 확정되었습니다. 블룸버그 보도에 따르면, 6월 22일 열릴 WWDC 2020에서, 맥의 ARM 칩 전환- 다시 말해 애플이 직접 설계한 CPU를 쓰겠다고 발표할 예정입니다. 코로나 19로 인해 발표 시기가 100% 확정된 건 아니지만, 전환 자체는 거의 확정입니다. 인텔칩을 버릴 예정이란 소문은 전부터 있긴 했습니다. 애플이 프로세서를 못 만드는 것도 아니고, 꽤 잘 만드는 데다가- 인텔이 최근 몇 년 간 CPU 생산에 여러가지 문제를 겪은 일도 있고, 전체 통제권을 다시 가져올 수 있기 때문입니다. 이미 만들어 놓은 ARM 기반 맥 프로세서가 있다는 말도 있고요. 물론 당장 모든 것이 바뀌진 않습니다.
[Arm프로세서] 하이퍼바이저: HCR_EL2 레지스터에 접근하는 어셈블리 코드 분석
By Guillermo Austin Kim | 2022년 2월 9일 |
이번에는 HCR_EL2 레지스터를 읽은 예시 코드를 소개합니다.다음은 XEN 하이퍼바이저에서 호출되는 _show_registers() 함수의 어셈블리 명령어입니다. 01 000000000025c550 <_show_registers.isra.14>:02 25c550: a9ba53f3 stp x19, x20, [sp, #-96]!03 25c554: 12001c54 and w20, w2, #0xff...04 25c62c: d53c1101 mrs x1, hcr_el205 25c630: 90000140 adrp x0, 284000 <symbols_token_index+0x9700>06 25c634: 91242000 add x0, x0, #0x90807 25c638: 97ff