[Arm프로세서] AAPCS: Armv7: push 명령어
By Guillermo Austin Kim | 2021년 5월 31일 |
SP 레지스터와 프로세스의 스택이 변경될 때 실행되는 명령어는 push와 pop입니다. 각 명령어의 의미를 알아보고, 예제 코드를 분석하겠습니다. 먼저 Arm 스팩 문서에서 push 명령어를 어떻게 설명하는지 알아봅시다. A8.8.133 PUSH Push Multiple Registers stores multiple registers to the stack, storing to consecutive memory locations ending just below the address in SP, and updates SP to point to the start of the stored data.(출처: DDI0406C_C_arm_architecture_reference_manual) 스팩 문서에서 p
애플 실리콘 DTK 벤치마크 및 추가적인 정보들...
By being nice to me | 2020년 6월 30일 |
예상은 했지만, 이게 올라온 것을 보고 든 생각은... 와...용자들(https://browser.geekbench.com/v5/cpu/search?q=eperm-d995af6e2ef02771)... Dev Transition Kit 사용 조건에 분명 '벤치마크 결과를 올리는 것 뿐 아니라 벤치마크를 돌리는 것 조차도 허용 안한다'라고 명시되어 있고, 이 조건을 어기면 애플 개발자 영구제명이 가능하다고 되어 있음에도 호기심은 어쩔 수 없나보네요. 물론, 덕분에 다른 겁쟁이들(...)은 돌려볼 필요도 없게 해 준 것은 감사합니다. 이제 다른 용자가 제명을 각오하고 분해 인증만 해 주면 되겠군요. (애플인사이더는 핸즈온 동영상도 올렸다가 내렸네요) 저정도면 생각보다 낮은 점수인가...라고 했는데 이건 로제
[Arm프로세서] 하이퍼바이저: hvc 명령어(하이퍼바이저 콜)
By Guillermo Austin Kim | 2022년 1월 26일 |
먼저 Arm 스팩 문서에서 HVC 명령어를 설명한 부분을 소개합니다. <출처: DDI0487G_b_armv8_arm.pdf> C6.2.94 HVCHypervisor Call causes an exception to EL2. Software executing at EL1 can use this instruction to call the hypervisor to request a service. 스팩 문서의 내용은 다음과 같이 해석할 수 있습니다. 하이퍼바이저 콜은 EL2로의 익셉션을 유발한다. EL1에서 실행되는 소프트웨어는 이 명령어(hvc)를 사용해 하이퍼바이저에게 어떤 서비스를 요청한다. EL1에서 hvc 명령어를 실행해 하이퍼바이저가 구동되는 EL2로 진입하는 동작을 하이퍼바
[Arm프로세서] AAPCS: Armv7: SP(스택 포인터) 레지스터의 세부 동작
By Guillermo Austin Kim | 2021년 6월 15일 |
SP는 스택 포인터(Stack Pointer) 레지스터라고 하며 약어로 R13으로 표기합니다. 일반적으로 여러분이 작성한 코드는 프로세스의 스택 공간에서 동작하므로, 어떤 코드가 실행하던 스택 주소의 위치를 알 수 있습니다. 스택 주소의 위치를 추적하는 레지스터가 SP 혹은 R13입니다. SP 레지스터와 프로세스의 스택과의 관계 그렇다면 SP 레지스터는 어떤 값을 저장할까요? SP(R13) 레지스터는 프로세스 스택 포인터의 주소를 저장합니다. 그러면 여기서 말하는, 프로세스의 스택 포인터 주소는 무엇일까요? 바로 프로세스에게 할당된 스택 주소의 위치를 나타냅니다. 프로세스는 처음 생성될 때 운영체제로부터 스택 공간을 할당받고, 자신에게 할당된 스택 공간 내에서 함수를 호출합니다. 달리 말하면 SP