Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

9365
557
421924


태그 : arm 요약보기전체보기목록닫기

1 2 3 4 5 6 7 8 9 10 다음

[Arm프로세서] AAPCS: Armv7: 함수 인자의 갯수는 4개 이하로 제한

함수에 전달되는 인자는 4개 이하로 제한하는 것이 좋습니다. 함수의 인자의 갯수가 5개를 넘어가면, 프로세스의 스택 공간에 인자를 저장해 전달하기 때문입니다.이번에는 함수에 5개의 인자를 전달하는 예제 코드를 분석하면서, 이 내용에 대해 조금 더 짚어봅시다. 01 int add_func(int a, int b, int c, int d, int ...

[Arm프로세서] AAPCS: Armv7: AAPCS와 C 코드 최적화

이제까지 다룬 Armv7 아키텍처에서 정의된 AAPCS를 배우고 나면 자연스럽게 다음과 같은 의문이 생길 가능성이 높습니다.    "AAPCS와 관련된 내용을 실무에 어떻게 활용할 수 있을까?" 이번 장의 앞 부분에서 강조했지만, Armv7 아키텍처를 구성하는 다른 내용보다도 AAPCS는 실무에 활용될 내용이 많습니다. 특히 ...

[Arm프로세서] AAPCS: Armv7: 함수를 호출할 때 쓰이는 R0 ~ R3 레지스터와 명령어 분석

SP 레지스터, LR 레지스터(R14)와 더불어 눈여겨봐야 할 레지스터가 R0 ~ R3 레지스터입니다.함수를 호출할 때 전달되는 인자는 R0 ~ R3 레지스터에 저장되고, 함수가 반환하는 값은 R0 레지스터로 저장되기 때문입니다.R0 ~ R3 레지스터의 역할: 함수에 전달된 인자 저장다음 예제 코드를 보면서 함수에 인자가 전달될 때의 세부 동작을 알아봅...

[Arm프로세서] AAPCS: Armv7: LR(R14) 링크 레지스터와 어셈블리 명령어 분석

SP 레지스터보다 링크 레지스터인 LR(R14)는 '함수 호출'에서 가장 중요한 역할을 수행합니다. 함수를 호출한 다음에 복귀할 주소를 LR(R14) 레지스터가 저장하기 때문입니다.우리가 함수를 작성하면 어디선가 함수를 호출할 것이라 예상합니다. 그런데 함수를 호출한 다음에, 호출된 함수의 실행이 종료되면, 함수를 호출한 바로 아랫 부분에 있는 코드가 ...

[Arm프로세서] AAPCS: Armv7: SP(스택 포인터) 레지스터의 세부 동작

SP는 스택 포인터(Stack Pointer) 레지스터라고 하며 약어로 R13으로 표기합니다. 일반적으로 여러분이 작성한 코드는 프로세스의 스택 공간에서 동작하므로, 어떤 코드가 실행하던 스택 주소의 위치를 알 수 있습니다. 스택 주소의 위치를 추적하는 레지스터가 SP 혹은 R13입니다. SP 레지스터와 프로세스의 스택과의 관계그렇다면 SP 레...

[Arm프로세서] AAPCS: Armv7: AAPCS와 관련된 레지스터와 어셈블리 명령어 분석

6.1절에서 Arm 스팩 문서 분석으로 AAPCS와 관련된 레지스터를 소개했고, 6.2절에서는 AAPCS와 관련된 어셈블리 명령어에 대해 살펴봤습니다. 이번 절에서는 AAPCS와 관련된 레지스터가 어떻게 사용되는지, 어셈블리 명령어와 함께 분석하면서 자세히 알아보겠습니다.먼저 AAPCS와 연관된 레지스터의 목록을 알아볼까요?  표 6....

[Arm프로세서] AAPCS: Armv7: 브랜치 명령어(bl)

C 프로그래밍으로 함수를 호출하는 구문을 어셈블리 코드로 확인하면 'bl [심벌 주소]'와 같은 명령어가 보입니다. 이번 절에서는 bl 명령어의 정의를 소개하고, 예제 코드를 분석하면서 bl 명령어의 사용법을 살펴보겠습니다.bl 명령어란이번에도 Arm 스팩 문서에서 bl 명령어를 설명하는 부분을 소개합니다.5.4 BranchesCalls to subro...

[Arm프로세서] AAPCS: Armv7: pop 명령어

push 명령어를 실행한 후 함수가 종료되기 직전에 반드시 실행되는 명령어가 pop입니다.Arm 스팩 문서에서 pop 명령어 분석하기이어서 Arm 스팩 문서에서 POP 명령어를 어떻게 설명하는지 알아 봅시다. A8.8.132 POP (ARM)Pop Multiple Registers loads multiple registers from the s...

[Arm프로세서] AAPCS: Armv7: push 명령어

SP 레지스터와 프로세스의 스택이 변경될 때 실행되는 명령어는 push와 pop입니다. 각 명령어의 의미를 알아보고, 예제 코드를 분석하겠습니다. 먼저 Arm 스팩 문서에서 push 명령어를 어떻게 설명하는지 알아봅시다.A8.8.133 PUSHPush Multiple Registers stores multiple registers to the ...

[Arm프로세서] AAPCS: Armv7: 서브 루틴(함수)로 분기될 때 실행되는 어셈블리 명령어

Armv7 아키텍처에 지원하는 레지스터들 중에 AAPCS와 연관된 레지스터가 SP, LR 레지스터이듯이, 수 많은 Armv7의 어셈블리 명령어 중에 AAPCS와 연관된 명령어가 있습니다. AAPCS와 연관된 명령어의 목록은 다음과 같습니다. 표 6.3 AAPCS와 관련된 명령어위 표에서 보이는 각 명령어를 소개하고 예제 코드를 분석하면...
1 2 3 4 5 6 7 8 9 10 다음