참고. ARM 어셈블리(Assembly)

참고. ARM 어셈블리(Assembly)

원문 : http://kkamagui.springnote.com/pages/432792

 

들어가기 전에...

 

 

1.ARM/THUMB Common Part

1.1 Condition Code

 ARM의 어셈블리 명령어들은 뒤에 post fix가 붙는데, 그 post fix의 의미는 아래와 같다. 일반적으로 아무것도 붙지 않으면 AL이라고 가정한다. Branch 명령인 B와 같은 경우 그냥 사용하면 BAL이 되고 BEQ와 같은 조합으로 CPSR에 있는 Condition flag를 이용하여 조건 분기와 같은 역할을 할 수 있는 것이다.

inst1.PNG

 

1.2 Addressing Mode

 addressMode.PNG

 

 

1.3 Shifter operand Mode

addressMode2.PNG

12. <Rm>, =XXX => XXX의 Address를 Rm에 넣는다.

 

 

 

1.4 Post-Fix

 

 

2.ARM/THUMB 명령어 리스트

2.1 필수 참고 사항

 

2.2 ARM 모드 Instruction List

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.3 THUMB 모드 Instruction List

 

 

3.ARM C Calling Convention

 ARM의 경우 레지스터가 많기 때문에 Intel과는 달리 4개의 파라메터까지는 Register 0 ~ Register 3에 저장하게 된다. R0 같은 경우는 일반적으로 리턴 값으로 사용되기도 하며, Register 4 ~ Register 8은 Callee에서 사용하는 레지스터이다.

 Caller는 R0 ~ R3 까지를 저장하고 복원할 책임을 가지며 Callee는 R4 ~ R8 까지를 저장하고 복원하는 책임을 가진다.

arm_calling.PNG

<APCS(Arm Procedure Call Standard)에서 각 레지스터의 역할>

 ARM에서 Branch를 하면 LR 레지스터에 Return Address가 저장되므로, 다시 다른 함수를 Call 하게 되면 LR 레지스터를 저장하고 다시 복구해야 한다.

 

4.마치며...

 ARM 어셈블리에 대해서 간략하게나마 정리했다. 시간 날때 틈틈히 찾아보도록 하자.