ARM GAS  array-str2.s 			page 1


   1              	/* --------------------------------------------------
   2              	   Define required labels for EGTAPI
   3              	   -------------------------------------------------- */
   4              	        .global main, Stop, CodeEnd
   5              		.global DataStart, DataEnd
   6              	
   7              		.global i1, i2, s1, s2, b1, b2	
   8              	
   9              	/* --------------------------------------------------
  10              	   Access A[k] (byte), B[k] (short) and C[k] (int)
  11              	   -------------------------------------------------- */
  12              		.text
  13              	main:
  14 0000 2CA0A0E3 		mov	r10, #44		// Value to be stored
  15              	
  16              	// ============================================================ A[3]
  17 0004 000000E3 		movw	r0, #:lower16:A
  18 0008 000040E3 		movt	r0, #:upper16:A		// r0 = base address of array A
  19              	
  20 000c 001000E3 		movw	r1, #:lower16:k
  21 0010 001040E3 		movt	r1, #:upper16:k		// r1 = address of k
  22 0014 001091E5 		ldr	r1, [r1]		// r1 = value in variable k
  23              						// Comment: use ldrsh if k is short !
  24              						//          use ldrsb if k is byte !
  25              	
  26              						// Address of A[3] = base addr + k*1
  27 0018 01A0C0E7 		strb    r10, [r0, r1]		// Store r10 in A[k] (byte)
  28              	
  29              	// ============================================================ B[3]
  30 001c 000000E3 	        movw    r0, #:lower16:B
  31 0020 000040E3 	        movt    r0, #:upper16:B         // r0 = base address of array B
  32              	
  33 0024 001000E3 	        movw    r1, #:lower16:k
  34 0028 001040E3 	        movt    r1, #:upper16:k         // r1 = address of k
  35 002c 001091E5 	        ldr     r1, [r1]                // r1 = value in variable k
  36              	                                        // Comment: use ldrsh if k is short !
  37              	                                        //          use ldrsb if k is byte !
  38              	
  39              	                                        // Address of B[3] = base addr + k*2
  40 0030 011081E0 		add	r1, r1, r1		// r1 = k+k = 2*k
  41 0034 B1A080E1 	        strh    r10, [r0, r1]           // Store r10 in B[3] (short)
  42              	
  43              	// ============================================================ C[3]
  44 0038 000000E3 	        movw    r0, #:lower16:C
  45 003c 000040E3 	        movt    r0, #:upper16:C         // r0 = base address of array C
  46              	
  47 0040 001000E3 	        movw    r1, #:lower16:k
  48 0044 001040E3 	        movt    r1, #:upper16:k         // r1 = address of k
  49 0048 001091E5 	        ldr     r1, [r1]                // r1 = value in variable k
  50              	                                        // Comment: use ldrsh if k is short !
  51              	                                        //          use ldrsb if k is byte !
  52              	
  53              	                                        // Address of C[3] = base addr + k*4
  54 004c 011081E0 		add	r1, r1, r1		// r1 = k+k = 2*k
  55 0050 011081E0 		add	r1, r1, r1		// r1 = 2*k + 2*k = 4*k
  56 0054 0CA080E5 	        str     r10, [r0, #12]          // Store r10 in C[3] (int)
  57              	
ARM GAS  array-str2.s 			page 2


  58              	
  59              	Stop:
  60              	CodeEnd:
  61 0058 0000A0E1 	    	nop
  62              	
  63              	/* --------------------------------------------------
  64              	   Begin of the permanent program variables
  65              	   -------------------------------------------------- */
  66              		.data
  67              	DataStart:
  68              	
  69 0000 0B0C0D0E 	A:	.byte   11, 12, 13, 14, 15     // byte typed initialzied array A 
  69      0F
  70              	
  71 0005 00       		.align 1
  72 0006 6F007000 	B:	.2byte  111, 112, 113, 114, 115 // short typed initialzied array B 
  72      71007200 
  72      7300
  73              	
  74              		.align 2
  75 0010 57040000 	C:	.4byte  1111, 1112, 1113, 1114, 1115 // int typed initialzied array C 
  75      58040000 
  75      59040000 
  75      5A040000 
  75      5B040000 
  76              	
  77              	
  78 0024 03000000 	k:	.4byte  3
  79              	
  80              	DataEnd:
  81              	
  82              		.end
ARM GAS  array-str2.s 			page 3


DEFINED SYMBOLS
        array-str2.s:13     .text:0000000000000000 main
        array-str2.s:59     .text:0000000000000058 Stop
        array-str2.s:60     .text:0000000000000058 CodeEnd
        array-str2.s:67     .data:0000000000000000 DataStart
        array-str2.s:80     .data:0000000000000028 DataEnd
        array-str2.s:14     .text:0000000000000000 $a
        array-str2.s:69     .data:0000000000000000 A
        array-str2.s:78     .data:0000000000000024 k
        array-str2.s:72     .data:0000000000000006 B
        array-str2.s:75     .data:0000000000000010 C
        array-str2.s:71     .data:0000000000000005 $d

UNDEFINED SYMBOLS
i1
i2
s1
s2
b1
b2
