Page 291 - ARM 64 Bit Assembly Language
P. 291

280 Chapter 8


                10        // gcc -o sincos sincos.S sincosmain.S fixedfuncs.c
                11
                12
                13        .data
                14  fmta:  .asciz  "%14.6f "
                15  head:  .asciz  "    x             sin(x)        cos(x)\n"
                16  line:  .asciz  "    ---------------------------------------\n"
                17  newline:.asciz  "\n"
                18  tab:  .asciz  "\t"
                19
                20
                21        //----------------------------------------------------------------
                22
                23        .text
                24        .global main
                25  main:  stp    x27,x28,[sp,#-16]!
                26        stp     x29,x30,[sp,#-16]!
                27        ldr     x0,=head
                28        bl      printf
                29        ldr     x0,=line
                30        bl      printf
                31
                32        mov     x27,#0
                33  mloop:
                34        // load count to r0 and convert it to a number x
                35        // between 0.0 and pi/2
                36        mov     x0,x27
                37        // multiply it by pi
                38        ldr     x1,=pi
                39        ldrsw   x1,[x1]
                40        smull   x0,w0,w1
                41        lsr     x0,x0,#4
                42        mov     x28,x0         // save it in x28 for later
                43        // print x
                44        mov     x1,#28
                45        ldr     x2,=fmta
                46        bl      printS
                47        ldr     x0,=tab
                48        bl      printf
                49        // calculate and print sin(x)
                50        mov     x0,x28         // retrieve x
                51        bl      fixed_sin
                52        mov     x1,#28
                53        ldr     x2,=fmta
                54        bl      printS
                55        ldr     x0,=tab
                56        bl      printf
                57        // // calculate and print cos(x)
                58        mov     x0,x28         // retrieve x
   286   287   288   289   290   291   292   293   294   295   296