Norcroft ARM C 1.50A Aug  7 1987


                |v$codeseg|
000000  ea000000  B       |__main|


#include <stdio.h>

#define true 1
#define false 0
#define size 8190

char flags[size+1];

main()

000004  6e69616d  DCB     &6d,&61,&69,&6e         ; 'main'
000008  00000000  DCB     &00,&00,&00,&00         ; '\0\0\0\0'
00000c  ff000008  DCD     &ff000008

{

<stdin>, line 12, Warning: 'int main()' assumed - 'void' intended?

                main

    int i,prime,k,count,iter;

000010  e1a0b00c  MOV     ip, sp
000014  e92cccf0  STMFD   sp!, {v1,v2,v3,v4,fp,ip,lk,pc}
000018  e24ba004  SUB     fp, ip, #4              ; 00000004
00001c  e15c000d  CMPS    sp, sl
000020  3b000000  BLCC    |x$stack_overflow|


    printf("10 iterations\n");

000024  e3a07001  MOV     v4, #1                  ; 00000001
000028  e28f0f23  ADD     a1, pc, #140            ; 0000008C
00002c  eb000000  BL      |_printf|

    for (iter = 1; iter <= 10; iter++)

    {   count = 0;
000030  e1a04007  MOV     v1, v4

        for (i = 0; i <= size; i++) flags[i] = true;
000034  e59f5090  LDR     v2, [pc, #144]
000038  e3a060fe  MOV     v3, #254                ; 000000FE
00003c  e2866c1f  ADD     v3, v3, #7936           ; 00001F00

000040  e3a03000  MOV     a4, #0                  ; 00000000
000044  e1a02003  MOV     a3, a4
000048  e1a00003  MOV     a1, a4

00004c  e7c57000  STRB    v4, [v2, a1]
000050  e2800001  ADD     a1, a1, #1              ; 00000001
000054  e1500006  CMPS    a1, v3
000058  dafffffb  BLE     main+&3c                ; 00FFFFFB

        for (i = 0; i <= size; i++)

        {   if (flags[i])
00005c  e1a00003  MOV     a1, a4
000060  e7d51000  LDRB    a2, [v2, a1]
000064  e3510000  CMPS    a2, #0                  ; 00000000
000068  0a000009  BEQ     main+&84                ; 00000009

            {   prime = i + i + 3;
00006c  e0801000  ADD     a2, a1, a1
000070  e281e003  ADD     lk, a2, #3              ; 00000003

                for (k = i+prime; k <= size; k += prime)
000074  e080100e  ADD     a2, a1, lk
000078  e1510006  CMPS    a2, v3
00007c  ca000003  BGT     main+&80                ; 00000003

                    flags[k] = false;
000080  e7c53001  STRB    a4, [v2, a2]

000084  e081100e  ADD     a2, a2, lk
000088  e1510006  CMPS    a2, v3
00008c  dafffffb  BLE     main+&70                ; 00FFFFFB

                count++;
000090  e2822001  ADD     a3, a3, #1              ; 00000001

            }

        }
000094  e2800001  ADD     a1, a1, #1              ; 00000001
000098  e1500006  CMPS    a1, v3
00009c  daffffef  BLE     main+&50                ; 00FFFFEF

    }
0000a0  e2844001  ADD     v1, v1, #1              ; 00000001
0000a4  e354000a  CMPS    v1, #10                 ; 0000000A
0000a8  daffffe5  BLE     main+&34                ; 00FFFFE5

    printf("\n%d primes.\n", count);
0000ac  e1a01002  MOV     a2, a3
0000b0  e28f0f06  ADD     a1, pc, #24             ; 00000018
0000b4  e91a54f0  LDMEA   fp, {v1,v2,v3,v4,fp,sp,lk}
0000b8  ea000000  B       |_printf|
}
<stdin>, line 28, Warning: implicit return in non-void function

0000bc  69203031  DCB     &31,&30,&20,&69         ; '10 i'
0000c0  61726574  DCB     &74,&65,&72,&61         ; 'tera'
0000c4  6e6f6974  DCB     &74,&69,&6f,&6e         ; 'tion'
0000c8  00000a73  DCB     &73,&0a,&00,&00         ; 's\n\0\0'
0000cc  00000000  DCD     flags
0000d0  2064250a  DCB     &0a,&25,&64,&20         ; '\n%d '
0000d4  6d697270  DCB     &70,&72,&69,&6d         ; 'prim'
0000d8  0a2e7365  DCB     &65,&73,&2e,&0a         ; 'es.\n'
0000dc  00000000  DCB     &00,&00,&00,&00         ; '\0\0\0\0'


 AREA |C$$data|
|v$dataseg|
flags
 % 8188
 DCD &00000000

 EXPORT main
 EXPORT flags

 IMPORT |_printf|
 IMPORT |x$stack_overflow|
 IMPORT |__main|

 END
<stdin>: 2 warnings, 0 errors, 0 serious errors.
