ARM GAS  if-and.s 			page 1


   1              	/* --------------------------------------------------
   2              	   Define required labels for EGTAPI
   3              	   -------------------------------------------------- */
   4              	        .global main, Stop, CodeEnd, DataStart, DataEnd
   5              	
   6              	        .global a, b, x
   7              	
   8              	/* --------------------------------------------------
   9              	   if (a <= x and x <= b)              
  10              	      x = x + 1;
  11              	   else
  12              	      x = x - 1;
  13              	   -------------------------------------------------- */
  14              		.text
  15              	main:
  16              		// Test if (a <= x )
  17 0000 000000E3 		movw	r0, #:lower16:a
  18 0004 000040E3 		movt	r0, #:upper16:a		// r0 = addr(a)
  19 0008 000090E5 		ldr	r0, [r0]		// r0 = a
  20              	
  21 000c 001000E3 		movw	r1, #:lower16:x
  22 0010 001040E3 		movt	r1, #:upper16:x		// r1 = addr(x)
  23 0014 001091E5 		ldr	r1, [r1]		// r1 = x
  24              	
  25 0018 010050E1 		cmp	r0, r1			// a <= x ?
  26 001c 0D0000CA 		bgt	else			// Branch to "else" if  a > x
  27              	
  28              		// test if ( x <= b )
  29 0020 000000E3 	        movw    r0, #:lower16:x
  30 0024 000040E3 	        movt    r0, #:upper16:x         // r0 = addr(x)
  31 0028 000090E5 	        ldr     r0, [r0]                // r0 = x
  32              	
  33 002c 001000E3 	        movw    r1, #:lower16:b
  34 0030 001040E3 	        movt    r1, #:upper16:b         // r1 = addr(b)
  35 0034 001091E5 	        ldr     r1, [r1]                // r1 = b
  36              	
  37 0038 010050E1 		cmp	r0, r1			// x <= b ?
  38 003c 050000CA 		bgt	else			// Branch to "else" if  x > b
  39              	
  40              	then:
  41 0040 000000E3 	        movw    r0, #:lower16:x
  42 0044 000040E3 	        movt    r0, #:upper16:x         // r0 = addr(x)
  43              	
  44 0048 001090E5 	        ldr     r1, [r0]                // r1 = x
  45 004c 011081E2 		add	r1, r1, #1		// r1 = x+1
  46 0050 001080E5 	        str     r1, [r0]                // x = x+1
  47              	
  48 0054 040000EA 		b	ifEnd
  49              	
  50              	else:
  51 0058 000000E3 	        movw    r0, #:lower16:x
  52 005c 000040E3 	        movt    r0, #:upper16:x         // r0 = addr(x)
  53              	        
  54 0060 001090E5 	        ldr     r1, [r0]                // r1 = x
  55 0064 011041E2 	        sub	r1, r1, #1              // r1 = x-1
  56 0068 001080E5 	        str     r1, [r0]                // x = x-1
  57              	
ARM GAS  if-and.s 			page 2


  58              	ifEnd:
  59              	
  60              	Stop:
  61              	CodeEnd:
  62 006c 0000A0E1 	    	nop
  63              	
  64              	/* --------------------------------------------------
  65              	   Begin of the permanent program variables
  66              	   -------------------------------------------------- */
  67              		.data
  68              	DataStart:
  69              	
  70 0000 2D000000 	x:    .4byte  45	// Try x outside    10 ... 20
  71 0004 0A000000 	a:    .4byte  10
  72 0008 14000000 	b:    .4byte  20
  73              	
  74              	DataEnd:
  75              	
  76              		.end
ARM GAS  if-and.s 			page 3


DEFINED SYMBOLS
            if-and.s:15     .text:0000000000000000 main
            if-and.s:60     .text:000000000000006c Stop
            if-and.s:61     .text:000000000000006c CodeEnd
            if-and.s:68     .data:0000000000000000 DataStart
            if-and.s:74     .data:000000000000000c DataEnd
            if-and.s:71     .data:0000000000000004 a
            if-and.s:72     .data:0000000000000008 b
            if-and.s:70     .data:0000000000000000 x
            if-and.s:17     .text:0000000000000000 $a
            if-and.s:50     .text:0000000000000058 else
            if-and.s:40     .text:0000000000000040 then
            if-and.s:58     .text:000000000000006c ifEnd

NO UNDEFINED SYMBOLS
