1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
1 ;--------------------------------------------------------
2 ; File Created by SDCC : free open source ANSI-C Compiler
3 ; Version 3.9.3 #11345 (Linux)
4 ;--------------------------------------------------------
5 .module _strcmp
6 .optsdcc -mstm8
7
8 ;--------------------------------------------------------
9 ; Public variables in this module
10 ;--------------------------------------------------------
11 .globl _strcmp
12 ;--------------------------------------------------------
13 ; ram data
14 ;--------------------------------------------------------
15 .area DATA
16 ;--------------------------------------------------------
17 ; ram data
18 ;--------------------------------------------------------
19 .area INITIALIZED
20 ;--------------------------------------------------------
21 ; absolute external ram data
22 ;--------------------------------------------------------
23 .area DABS (ABS)
24
25 ; default segment ordering for linker
26 .area HOME
27 .area GSINIT
28 .area GSFINAL
29 .area CONST
30 .area INITIALIZER
31 .area CODE
32
33 ;--------------------------------------------------------
34 ; global & static initialisations
35 ;--------------------------------------------------------
36 .area HOME
37 .area GSINIT
38 .area GSFINAL
39 .area GSINIT
40 ;--------------------------------------------------------
41 ; Home
42 ;--------------------------------------------------------
43 .area HOME
44 .area HOME
45 ;--------------------------------------------------------
46 ; code
47 ;--------------------------------------------------------
48 .area CODE
49 ; ../_strcmp.c: 34: int strcmp ( const char * asrc, const char * adst )
50 ; -----------------------------------------
51 ; function strcmp
52 ; -----------------------------------------
000000 53 _strcmp:
000000 52 08 [ 2] 54 sub sp, #8
55 ; ../_strcmp.c: 40: const char * src = asrc;
000002 16 0C [ 2] 56 ldw y, (0x0c, sp)
000004 17 01 [ 2] 57 ldw (0x01, sp), y
58 ; ../_strcmp.c: 41: const char * dst = adst;
000006 16 0E [ 2] 59 ldw y, (0x0e, sp)
000008 17 03 [ 2] 60 ldw (0x03, sp), y
61 ; ../_strcmp.c: 43: while( ! (*src - *dst) && *dst)
00000A 62 00102$:
00000A 1E 01 [ 2] 63 ldw x, (0x01, sp)
00000C F6 [ 1] 64 ld a, (x)
00000D 5F [ 1] 65 clrw x
00000E 97 [ 1] 66 ld xl, a
00000F 16 03 [ 2] 67 ldw y, (0x03, sp)
000011 90 F6 [ 1] 68 ld a, (y)
000013 6B 06 [ 1] 69 ld (0x06, sp), a
000015 0F 05 [ 1] 70 clr (0x05, sp)
000017 72 F0 05 [ 2] 71 subw x, (0x05, sp)
00001A 1F 07 [ 2] 72 ldw (0x07, sp), x
00001C 26 11 [ 1] 73 jrne 00104$
00001E 4D [ 1] 74 tnz a
00001F 27 0E [ 1] 75 jreq 00104$
76 ; ../_strcmp.c: 44: ++src, ++dst;
000021 1E 01 [ 2] 77 ldw x, (0x01, sp)
000023 5C [ 1] 78 incw x
000024 1F 07 [ 2] 79 ldw (0x07, sp), x
000026 1F 01 [ 2] 80 ldw (0x01, sp), x
000028 1E 03 [ 2] 81 ldw x, (0x03, sp)
00002A 5C [ 1] 82 incw x
00002B 1F 03 [ 2] 83 ldw (0x03, sp), x
00002D 20 DB [ 2] 84 jra 00102$
00002F 85 00104$:
86 ; ../_strcmp.c: 46: return *src - *dst;
00002F 1E 07 [ 2] 87 ldw x, (0x07, sp)
88 ; ../_strcmp.c: 55: }
000031 5B 08 [ 2] 89 addw sp, #8
000033 87 [ 5] 90 retf
91 .area CODE
92 .area CONST
93 .area INITIALIZER
94 .area CABS (ABS)
|