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