ARM 주소 지정방식의 예는?

rain의 이미지

요즘 ARM System Developer's Guide를 보구 있는데요.
ARM instruction set이 제공하는 memory address를
계산하기 위한 mode에 관한 부분을 봤습니다.
아래와 같은 부분을 읽고는 c로 예제코드를 짜서 armcc -S 로
compile해보면 각각의 mode가 사용된 예가 나오겠다라고
생각하구 예제를 짜봤는데. ASM code가 생각했던 데로
나오질 않네요.
올바른 예제는 어떤 코드로 짜야 하는지 궁금합니다.

Quote:

프리 인덱스 모드는 데이터 구조 안의 요소들을 액세스하기 위해 사용된다. 포스트인덱스와 자동인덱스는 배열을 검색하는데 사용된다.
- ARM System Developer's Guide, 69p -

Example: C code

      1
      2 #include <stdio.h>
      3
      4 int
      5 main() {
      6     struct point {
      7         int x;
      8         int y;
      9     };
     10
     11     struct point line[2];
     12
     13     line[1].x = 2;
     14
     15     printf("line[1].x = %d\n", line[1].x);
     16
     17     return 0;
     18 }
     19

Example: armcc -S로 compile된 ASM code

      1 ; generated by ARM C Compiler, ADS1.2 [Build 842]
      2
      3 ; commandline [-O2 -S -IC:\ARM\ADSv1_2\INCLUDE]
      4         CODE32
      5
      6         AREA ||.text||, CODE, READONLY
      7
      8 main PROC
      9         STMFD    sp!,{r3,lr}
     10         MOV      r1,#2
     11         ADR      r0,|L1.24|
     12         BL       _printf
     13         MOV      r0,#0
     14         LDMFD    sp!,{r3,pc}
     15 |L1.24|
     16         DCB      "line"
     17         DCB      "[1]."
     18         DCB      "x = "
     19         DCB      "%d\n\0"
     20         ENDP
     21
     22
     23
     24         EXPORT main
     25
     26         IMPORT _main
     27         IMPORT __main
     28         IMPORT _printf
     29         IMPORT ||Lib$$Request$$armlib||, WEAK
     30
     31         KEEP ||BuildAttributes$$ARM_ISAv4$M$PE$A:L22$X:L11$S22$~IW$USESV
        6$~STKCKD$USESV7$~SHL$OSPACE$PRES8||
     32 ||BuildAttributes$$ARM_ISAv4$M$PE$A:L22$X:L11$S22$~IW$USESV6$~STKCKD$USE
        SV7$~SHL$OSPACE$PRES8|| EQU 0
     33
     34         ASSERT {ENDIAN} = "little"
     35         ASSERT {SWST} = {FALSE}
     36         ASSERT {NOSWST} = {TRUE}
     37         ASSERT {INTER} = {FALSE}
     38         ASSERT {ROPI} = {FALSE}
     39         ASSERT {RWPI} = {FALSE}
     40         ASSERT {NOT_SHL} = {TRUE}
     41         ASSERT {FULL_IEEE} = {FALSE}
     42         ASSERT {SHL1} = {FALSE}
     43         ASSERT {SHL2} = {FALSE}
     44         END