태그>aapcs(총 26개의 글)
'aapcs' 관련 최근글
-
- [Arm프로세서] AAPCS: Armv8: C 코드 최적화 -..

-
Arm Linux Kernel Hacks by AustinKim|2021/09/01 11:33
6.4 절에서 Armv7 아키텍처에서 다룬 AAPCS는 실무에 적용할 만한 실용적인 내용이 많다고 설명했습니다. Armv8 아키텍처의 AAPCS도 마찬가지입니다. 이번 절에서는 Armv8 아키텍처의 AAPCS에서 성능 ..
- [Arm프로세서] AAPCS: Armv8: C 코드 최적화 -..
-
- [Arm프로세서] AAPCS: Armv8: 함수를 호출할 때..

-
Arm Linux Kernel Hacks by AustinKim|2021/08/31 08:54
SP 레지스터, X30 레지스터와 더불어 눈여겨봐야 할 레지스터가 X0-X7 레지스터입니다.함수를 호출할 때 전달되는 인자는 X0-X7 레지스터에 저장되고, 함수가 반환하는 값은 X0 레지스터로 저장되기 때문입..
- [Arm프로세서] AAPCS: Armv8: 함수를 호출할 때..
-
- [Arm프로세서] AAPCS: Armv8: X30 링크 레지스..

-
Arm Linux Kernel Hacks by AustinKim|2021/08/30 09:03
SP 레지스터보다 링크 레지스터인 X30은 '함수 호출'에서 가장 중요한 역할을 수행합니다. 함수를 호출한 다음에 복귀할 주소를 X30 레지스터가 저장하기 때문입니다. 우리가 함수를 작성하면 어디선가 함수를 ..
- [Arm프로세서] AAPCS: Armv8: X30 링크 레지스..
-
- [Arm프로세서] AAPCS: Armv8: SP(스택 포인..

-
Arm Linux Kernel Hacks by AustinKim|2021/08/29 22:25
SP는 스택 포인터(Stack Pointer) 레지스터라고 하는데, Armv8 아키텍처에서는 SP_ELn로 표기합니다. SP_ELn 레지스터와 익셉션 레벨 6장에서는 SP은 프로세스의 스택 공간 내에서 업데이트된다고 ..
- [Arm프로세서] AAPCS: Armv8: SP(스택 포인..
-
- [Arm프로세서] AAPCS: Armv8: AAPCS와 관련..

-
Arm Linux Kernel Hacks by AustinKim|2021/08/29 22:24
지금까지 AAPCS와 관련된 레지스터인 SP_ELn, X30 그리고 X0-X7 레지스터에 대해 알아봤습니다. 또한 서브 루틴을 호출할 때 실행되는 어셈블리 명령어를 소개했습니다. 이번 절에서는 어셈블리 명령어를..
- [Arm프로세서] AAPCS: Armv8: AAPCS와 관련..
-
- [Arm프로세서] AAPCS: Armv8: 브랜치와 복귀 ..

-
Arm Linux Kernel Hacks by AustinKim|2021/08/28 09:33
마지막으로 AAPCS와 연관된 명령어로 RET 에 대해 알아봅시다. 다음은 Arm 스팩 문서에서 명시된 RET 명령어에 대한 내용입니다. C6.2.219 RET Return from subroutine branches unconditionally to..
- [Arm프로세서] AAPCS: Armv8: 브랜치와 복귀 ..
-
- [Arm프로세서] AAPCS: Armv8: 브랜치와 복귀 ..

-
Arm Linux Kernel Hacks by AustinKim|2021/08/14 23:41
Arm 스팩 문서를 보면서 BL 명령어에 대해 알아봅시다. C6.2.33 BLBranch with Link branches to a PC-relative offset, setting the register X30 to PC+4. It provides a hint that this is a subro..
- [Arm프로세서] AAPCS: Armv8: 브랜치와 복귀 ..
-
- [Arm프로세서] AAPCS: Armv8: 스택과 관련된 ..

-
Arm Linux Kernel Hacks by AustinKim|2021/08/12 07:17
Armv7 아키텍처에서 push 명령어를 실행한 후 함수가 종료되기 직전에 반드시 실행되는 명령어가 pop입니다. 마찬가지로 Armv8 아키텍처에서 stp 명령어를 사용해 스택에 레지스터를 푸시한 후, 함수를 종..
- [Arm프로세서] AAPCS: Armv8: 스택과 관련된 ..
-
- [Arm프로세서] AAPCS: Armv8: 스택과 관련된 ..

-
Arm Linux Kernel Hacks by AustinKim|2021/08/02 09:02
sub는 지정된 상수만큼 감소시키는 연산을 수행하는 명령어인데, stp 명령어 전 후로 'sub sp, sp, #16'와 같이 SP 레지스터의 값을 감소시키는 명령어를 볼 수 있습니다. 이 동작은 Armv7 아키텍처에서 ..
- [Arm프로세서] AAPCS: Armv8: 스택과 관련된 ..
-
- [Arm프로세서] AAPCS: Armv8: 스택과 관련된 ..

-
Arm Linux Kernel Hacks by AustinKim|2021/07/27 08:10
SP 레지스터가 변경될 때 실행되는 명령어는 stp와 ltp입니다. 먼저 명령어의 정의를 소개하고, 예제 코드를 분석하면서 명령어의 동작 원리에 대해 알아봅시다. Armv7 아키텍처에서 SP 레지스터가 변경되면..
- [Arm프로세서] AAPCS: Armv8: 스택과 관련된 ..
-
- [Arm프로세서] AAPCS: Armv8: 서브 루틴(함..

-
Arm Linux Kernel Hacks by AustinKim|2021/07/27 08:09
arm 아키텍처의 세부 동작을 제대로 파악하려면, 해당 Arm 아키텍처에서 지원하는 어셈블리 명령어를 배워야 합니다. 이는 Armv8 아키텍처의 AAPCS64에도 마찬가지로 적용될 수 있습니다. 이번 절에서는 Armv..
- [Arm프로세서] AAPCS: Armv8: 서브 루틴(함..
-
- [Arm프로세서] AAPCS: Armv8: 함수를 호출하기..

-
Arm Linux Kernel Hacks by AustinKim|2021/07/26 14:55
이번 절에서는 AAPCS64 기준으로, 실제 함수를 호출하는 예시 코드와 함께, 함수를 호출하면 SP와 X30 레지스터가 어떻게 바뀌는지 알아보겠습니다. 함수가 호출될 때의 세부 동작 원리 파악하기 여러분이 다..
- [Arm프로세서] AAPCS: Armv8: 함수를 호출하기..
-
- [Arm프로세서] AAPCS: Armv8 아키텍처에서 AA..

-
Arm Linux Kernel Hacks by AustinKim|2021/07/13 06:39
Armv8 아키텍처의 AAPCS를 구성하는 주요 개념은 Armv7 아키텍처와 거의 유사합니다. 6장에서 다룬 내용을 요약하면 다음과 같습니다. * 서브 루틴을 호출하면 프로세스의 스택 공간에 레지스터를 푸시한다. * 'b..
- [Arm프로세서] AAPCS: Armv8 아키텍처에서 AA..
-
- [Arm프로세서] AAPCS: Armv7: 매우 자주 호출되..

-
Arm Linux Kernel Hacks by AustinKim|2021/07/13 06:37
이번 장에서 서브 루틴을 호출하면 다음과 같은 동작을 수행한다고 배웠습니다. * R0~R3 레지스터에 함수의 인자를 저장 * 서브 루틴은 push와 pop 명령어를 사용해 링크 레지스터를 백업 * 서브 루틴에서 반환..
- [Arm프로세서] AAPCS: Armv7: 매우 자주 호출되..
-
- [Arm프로세서] AAPCS: Armv7: 함수 반환형은 워..

-
Arm Linux Kernel Hacks by AustinKim|2021/07/06 06:21
함수를 반환하는 자료형은 워드 단위로 제한하는 것이 좋습니다. 워드형인 경우 반환값은 R0 레지스터에 저장하나, 데이터가 워드 범위를 벗어난 경우 R0와 R1레지스터에 반환값을 나눠서 처리하기 때문입니다...
- [Arm프로세서] AAPCS: Armv7: 함수 반환형은 워..



