5872 lines
248 KiB
Plaintext
5872 lines
248 KiB
Plaintext
|
ARM GAS /tmp/ccibzHy5.s page 1
|
|||
|
|
|||
|
|
|||
|
1 .cpu cortex-m7
|
|||
|
2 .eabi_attribute 28, 1
|
|||
|
3 .eabi_attribute 20, 1
|
|||
|
4 .eabi_attribute 21, 1
|
|||
|
5 .eabi_attribute 23, 3
|
|||
|
6 .eabi_attribute 24, 1
|
|||
|
7 .eabi_attribute 25, 1
|
|||
|
8 .eabi_attribute 26, 1
|
|||
|
9 .eabi_attribute 30, 1
|
|||
|
10 .eabi_attribute 34, 1
|
|||
|
11 .eabi_attribute 18, 4
|
|||
|
12 .file "printf.c"
|
|||
|
13 .text
|
|||
|
14 .Ltext0:
|
|||
|
15 .cfi_sections .debug_frame
|
|||
|
16 .section .text._out_buffer,"ax",%progbits
|
|||
|
17 .align 1
|
|||
|
18 .arch armv7e-m
|
|||
|
19 .syntax unified
|
|||
|
20 .thumb
|
|||
|
21 .thumb_func
|
|||
|
22 .fpu fpv5-d16
|
|||
|
24 _out_buffer:
|
|||
|
25 .LVL0:
|
|||
|
26 .LFB0:
|
|||
|
27 .file 1 "Core/Src/printf.c"
|
|||
|
1:Core/Src/printf.c **** ///////////////////////////////////////////////////////////////////////////////
|
|||
|
2:Core/Src/printf.c **** // \author (c) Marco Paland (info@paland.com)
|
|||
|
3:Core/Src/printf.c **** // 2014-2019, PALANDesign Hannover, Germany
|
|||
|
4:Core/Src/printf.c **** //
|
|||
|
5:Core/Src/printf.c **** // \license The MIT License (MIT)
|
|||
|
6:Core/Src/printf.c **** //
|
|||
|
7:Core/Src/printf.c **** // Permission is hereby granted, free of charge, to any person obtaining a copy
|
|||
|
8:Core/Src/printf.c **** // of this software and associated documentation files (the "Software"), to deal
|
|||
|
9:Core/Src/printf.c **** // in the Software without restriction, including without limitation the rights
|
|||
|
10:Core/Src/printf.c **** // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|||
|
11:Core/Src/printf.c **** // copies of the Software, and to permit persons to whom the Software is
|
|||
|
12:Core/Src/printf.c **** // furnished to do so, subject to the following conditions:
|
|||
|
13:Core/Src/printf.c **** //
|
|||
|
14:Core/Src/printf.c **** // The above copyright notice and this permission notice shall be included in
|
|||
|
15:Core/Src/printf.c **** // all copies or substantial portions of the Software.
|
|||
|
16:Core/Src/printf.c **** //
|
|||
|
17:Core/Src/printf.c **** // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|||
|
18:Core/Src/printf.c **** // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|||
|
19:Core/Src/printf.c **** // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|||
|
20:Core/Src/printf.c **** // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|||
|
21:Core/Src/printf.c **** // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|||
|
22:Core/Src/printf.c **** // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|||
|
23:Core/Src/printf.c **** // THE SOFTWARE.
|
|||
|
24:Core/Src/printf.c **** //
|
|||
|
25:Core/Src/printf.c **** // \brief Tiny printf, sprintf and (v)snprintf implementation, optimized for speed on
|
|||
|
26:Core/Src/printf.c **** // embedded systems with a very limited resources. These routines are thread
|
|||
|
27:Core/Src/printf.c **** // safe and reentrant!
|
|||
|
28:Core/Src/printf.c **** // Use this instead of the bloated standard/newlib printf cause these use
|
|||
|
29:Core/Src/printf.c **** // malloc for printf (and may not be thread safe).
|
|||
|
30:Core/Src/printf.c **** //
|
|||
|
31:Core/Src/printf.c **** ///////////////////////////////////////////////////////////////////////////////
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 2
|
|||
|
|
|||
|
|
|||
|
32:Core/Src/printf.c ****
|
|||
|
33:Core/Src/printf.c **** #include <stdbool.h>
|
|||
|
34:Core/Src/printf.c **** #include <stdint.h>
|
|||
|
35:Core/Src/printf.c ****
|
|||
|
36:Core/Src/printf.c **** #include "printf.h"
|
|||
|
37:Core/Src/printf.c ****
|
|||
|
38:Core/Src/printf.c ****
|
|||
|
39:Core/Src/printf.c **** // define this globally (e.g. gcc -DPRINTF_INCLUDE_CONFIG_H ...) to include the
|
|||
|
40:Core/Src/printf.c **** // printf_config.h header file
|
|||
|
41:Core/Src/printf.c **** // default: undefined
|
|||
|
42:Core/Src/printf.c **** #ifdef PRINTF_INCLUDE_CONFIG_H
|
|||
|
43:Core/Src/printf.c **** #include "printf_config.h"
|
|||
|
44:Core/Src/printf.c **** #endif
|
|||
|
45:Core/Src/printf.c ****
|
|||
|
46:Core/Src/printf.c ****
|
|||
|
47:Core/Src/printf.c **** // 'ntoa' conversion buffer size, this must be big enough to hold one converted
|
|||
|
48:Core/Src/printf.c **** // numeric number including padded zeros (dynamically created on stack)
|
|||
|
49:Core/Src/printf.c **** // default: 32 byte
|
|||
|
50:Core/Src/printf.c **** #ifndef PRINTF_NTOA_BUFFER_SIZE
|
|||
|
51:Core/Src/printf.c **** #define PRINTF_NTOA_BUFFER_SIZE 32U
|
|||
|
52:Core/Src/printf.c **** #endif
|
|||
|
53:Core/Src/printf.c ****
|
|||
|
54:Core/Src/printf.c **** // 'ftoa' conversion buffer size, this must be big enough to hold one converted
|
|||
|
55:Core/Src/printf.c **** // float number including padded zeros (dynamically created on stack)
|
|||
|
56:Core/Src/printf.c **** // default: 32 byte
|
|||
|
57:Core/Src/printf.c **** #ifndef PRINTF_FTOA_BUFFER_SIZE
|
|||
|
58:Core/Src/printf.c **** #define PRINTF_FTOA_BUFFER_SIZE 32U
|
|||
|
59:Core/Src/printf.c **** #endif
|
|||
|
60:Core/Src/printf.c ****
|
|||
|
61:Core/Src/printf.c **** // support for the floating point type (%f)
|
|||
|
62:Core/Src/printf.c **** // default: activated
|
|||
|
63:Core/Src/printf.c **** #ifndef PRINTF_DISABLE_SUPPORT_FLOAT
|
|||
|
64:Core/Src/printf.c **** #define PRINTF_SUPPORT_FLOAT
|
|||
|
65:Core/Src/printf.c **** #endif
|
|||
|
66:Core/Src/printf.c ****
|
|||
|
67:Core/Src/printf.c **** // support for exponential floating point notation (%e/%g)
|
|||
|
68:Core/Src/printf.c **** // default: activated
|
|||
|
69:Core/Src/printf.c **** #ifndef PRINTF_DISABLE_SUPPORT_EXPONENTIAL
|
|||
|
70:Core/Src/printf.c **** #define PRINTF_SUPPORT_EXPONENTIAL
|
|||
|
71:Core/Src/printf.c **** #endif
|
|||
|
72:Core/Src/printf.c ****
|
|||
|
73:Core/Src/printf.c **** // define the default floating point precision
|
|||
|
74:Core/Src/printf.c **** // default: 6 digits
|
|||
|
75:Core/Src/printf.c **** #ifndef PRINTF_DEFAULT_FLOAT_PRECISION
|
|||
|
76:Core/Src/printf.c **** #define PRINTF_DEFAULT_FLOAT_PRECISION 6U
|
|||
|
77:Core/Src/printf.c **** #endif
|
|||
|
78:Core/Src/printf.c ****
|
|||
|
79:Core/Src/printf.c **** // define the largest float suitable to print with %f
|
|||
|
80:Core/Src/printf.c **** // default: 1e9
|
|||
|
81:Core/Src/printf.c **** #ifndef PRINTF_MAX_FLOAT
|
|||
|
82:Core/Src/printf.c **** #define PRINTF_MAX_FLOAT 1e9
|
|||
|
83:Core/Src/printf.c **** #endif
|
|||
|
84:Core/Src/printf.c ****
|
|||
|
85:Core/Src/printf.c **** // support for the long long types (%llu or %p)
|
|||
|
86:Core/Src/printf.c **** // default: activated
|
|||
|
87:Core/Src/printf.c **** #ifndef PRINTF_DISABLE_SUPPORT_LONG_LONG
|
|||
|
88:Core/Src/printf.c **** #define PRINTF_SUPPORT_LONG_LONG
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 3
|
|||
|
|
|||
|
|
|||
|
89:Core/Src/printf.c **** #endif
|
|||
|
90:Core/Src/printf.c ****
|
|||
|
91:Core/Src/printf.c **** // support for the ptrdiff_t type (%t)
|
|||
|
92:Core/Src/printf.c **** // ptrdiff_t is normally defined in <stddef.h> as long or long long type
|
|||
|
93:Core/Src/printf.c **** // default: activated
|
|||
|
94:Core/Src/printf.c **** #ifndef PRINTF_DISABLE_SUPPORT_PTRDIFF_T
|
|||
|
95:Core/Src/printf.c **** #define PRINTF_SUPPORT_PTRDIFF_T
|
|||
|
96:Core/Src/printf.c **** #endif
|
|||
|
97:Core/Src/printf.c ****
|
|||
|
98:Core/Src/printf.c **** ///////////////////////////////////////////////////////////////////////////////
|
|||
|
99:Core/Src/printf.c ****
|
|||
|
100:Core/Src/printf.c **** // internal flag definitions
|
|||
|
101:Core/Src/printf.c **** #define FLAGS_ZEROPAD (1U << 0U)
|
|||
|
102:Core/Src/printf.c **** #define FLAGS_LEFT (1U << 1U)
|
|||
|
103:Core/Src/printf.c **** #define FLAGS_PLUS (1U << 2U)
|
|||
|
104:Core/Src/printf.c **** #define FLAGS_SPACE (1U << 3U)
|
|||
|
105:Core/Src/printf.c **** #define FLAGS_HASH (1U << 4U)
|
|||
|
106:Core/Src/printf.c **** #define FLAGS_UPPERCASE (1U << 5U)
|
|||
|
107:Core/Src/printf.c **** #define FLAGS_CHAR (1U << 6U)
|
|||
|
108:Core/Src/printf.c **** #define FLAGS_SHORT (1U << 7U)
|
|||
|
109:Core/Src/printf.c **** #define FLAGS_LONG (1U << 8U)
|
|||
|
110:Core/Src/printf.c **** #define FLAGS_LONG_LONG (1U << 9U)
|
|||
|
111:Core/Src/printf.c **** #define FLAGS_PRECISION (1U << 10U)
|
|||
|
112:Core/Src/printf.c **** #define FLAGS_ADAPT_EXP (1U << 11U)
|
|||
|
113:Core/Src/printf.c ****
|
|||
|
114:Core/Src/printf.c ****
|
|||
|
115:Core/Src/printf.c **** // import float.h for DBL_MAX
|
|||
|
116:Core/Src/printf.c **** #if defined(PRINTF_SUPPORT_FLOAT)
|
|||
|
117:Core/Src/printf.c **** #include <float.h>
|
|||
|
118:Core/Src/printf.c **** #endif
|
|||
|
119:Core/Src/printf.c ****
|
|||
|
120:Core/Src/printf.c ****
|
|||
|
121:Core/Src/printf.c **** // output function type
|
|||
|
122:Core/Src/printf.c **** typedef void (*out_fct_type)(char character, void* buffer, size_t idx, size_t maxlen);
|
|||
|
123:Core/Src/printf.c ****
|
|||
|
124:Core/Src/printf.c ****
|
|||
|
125:Core/Src/printf.c **** // wrapper (used as buffer) for output function type
|
|||
|
126:Core/Src/printf.c **** typedef struct {
|
|||
|
127:Core/Src/printf.c **** void (*fct)(char character, void* arg);
|
|||
|
128:Core/Src/printf.c **** void* arg;
|
|||
|
129:Core/Src/printf.c **** } out_fct_wrap_type;
|
|||
|
130:Core/Src/printf.c ****
|
|||
|
131:Core/Src/printf.c ****
|
|||
|
132:Core/Src/printf.c **** // internal buffer output
|
|||
|
133:Core/Src/printf.c **** static inline void _out_buffer(char character, void* buffer, size_t idx, size_t maxlen)
|
|||
|
134:Core/Src/printf.c **** {
|
|||
|
28 .loc 1 134 1 view -0
|
|||
|
29 .cfi_startproc
|
|||
|
30 @ args = 0, pretend = 0, frame = 0
|
|||
|
31 @ frame_needed = 0, uses_anonymous_args = 0
|
|||
|
32 @ link register save eliminated.
|
|||
|
135:Core/Src/printf.c **** if (idx < maxlen) {
|
|||
|
33 .loc 1 135 3 view .LVU1
|
|||
|
34 .loc 1 135 6 is_stmt 0 view .LVU2
|
|||
|
35 0000 9A42 cmp r2, r3
|
|||
|
36 0002 00D2 bcs .L1
|
|||
|
136:Core/Src/printf.c **** ((char*)buffer)[idx] = character;
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 4
|
|||
|
|
|||
|
|
|||
|
37 .loc 1 136 5 is_stmt 1 view .LVU3
|
|||
|
38 .loc 1 136 26 is_stmt 0 view .LVU4
|
|||
|
39 0004 8854 strb r0, [r1, r2]
|
|||
|
40 .L1:
|
|||
|
137:Core/Src/printf.c **** }
|
|||
|
138:Core/Src/printf.c **** }
|
|||
|
41 .loc 1 138 1 view .LVU5
|
|||
|
42 0006 7047 bx lr
|
|||
|
43 .cfi_endproc
|
|||
|
44 .LFE0:
|
|||
|
46 .section .text._out_null,"ax",%progbits
|
|||
|
47 .align 1
|
|||
|
48 .syntax unified
|
|||
|
49 .thumb
|
|||
|
50 .thumb_func
|
|||
|
51 .fpu fpv5-d16
|
|||
|
53 _out_null:
|
|||
|
54 .LVL1:
|
|||
|
55 .LFB1:
|
|||
|
139:Core/Src/printf.c ****
|
|||
|
140:Core/Src/printf.c ****
|
|||
|
141:Core/Src/printf.c **** // internal null output
|
|||
|
142:Core/Src/printf.c **** static inline void _out_null(char character, void* buffer, size_t idx, size_t maxlen)
|
|||
|
143:Core/Src/printf.c **** {
|
|||
|
56 .loc 1 143 1 is_stmt 1 view -0
|
|||
|
57 .cfi_startproc
|
|||
|
58 @ args = 0, pretend = 0, frame = 0
|
|||
|
59 @ frame_needed = 0, uses_anonymous_args = 0
|
|||
|
60 @ link register save eliminated.
|
|||
|
144:Core/Src/printf.c **** (void)character; (void)buffer; (void)idx; (void)maxlen;
|
|||
|
61 .loc 1 144 3 view .LVU7
|
|||
|
62 .loc 1 144 20 view .LVU8
|
|||
|
63 .loc 1 144 34 view .LVU9
|
|||
|
64 .loc 1 144 45 view .LVU10
|
|||
|
145:Core/Src/printf.c **** }
|
|||
|
65 .loc 1 145 1 is_stmt 0 view .LVU11
|
|||
|
66 0000 7047 bx lr
|
|||
|
67 .cfi_endproc
|
|||
|
68 .LFE1:
|
|||
|
70 .section .text._out_fct,"ax",%progbits
|
|||
|
71 .align 1
|
|||
|
72 .syntax unified
|
|||
|
73 .thumb
|
|||
|
74 .thumb_func
|
|||
|
75 .fpu fpv5-d16
|
|||
|
77 _out_fct:
|
|||
|
78 .LVL2:
|
|||
|
79 .LFB3:
|
|||
|
146:Core/Src/printf.c ****
|
|||
|
147:Core/Src/printf.c ****
|
|||
|
148:Core/Src/printf.c **** // internal _putchar wrapper
|
|||
|
149:Core/Src/printf.c **** static inline void _out_char(char character, void* buffer, size_t idx, size_t maxlen)
|
|||
|
150:Core/Src/printf.c **** {
|
|||
|
151:Core/Src/printf.c **** (void)buffer; (void)idx; (void)maxlen;
|
|||
|
152:Core/Src/printf.c **** if (character) {
|
|||
|
153:Core/Src/printf.c **** _putchar(character);
|
|||
|
154:Core/Src/printf.c **** }
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 5
|
|||
|
|
|||
|
|
|||
|
155:Core/Src/printf.c **** }
|
|||
|
156:Core/Src/printf.c ****
|
|||
|
157:Core/Src/printf.c ****
|
|||
|
158:Core/Src/printf.c **** // internal output function wrapper
|
|||
|
159:Core/Src/printf.c **** static inline void _out_fct(char character, void* buffer, size_t idx, size_t maxlen)
|
|||
|
160:Core/Src/printf.c **** {
|
|||
|
80 .loc 1 160 1 is_stmt 1 view -0
|
|||
|
81 .cfi_startproc
|
|||
|
82 @ args = 0, pretend = 0, frame = 0
|
|||
|
83 @ frame_needed = 0, uses_anonymous_args = 0
|
|||
|
161:Core/Src/printf.c **** (void)idx; (void)maxlen;
|
|||
|
84 .loc 1 161 3 view .LVU13
|
|||
|
85 .loc 1 161 14 view .LVU14
|
|||
|
162:Core/Src/printf.c **** if (character) {
|
|||
|
86 .loc 1 162 3 view .LVU15
|
|||
|
87 .loc 1 162 6 is_stmt 0 view .LVU16
|
|||
|
88 0000 20B1 cbz r0, .L7
|
|||
|
160:Core/Src/printf.c **** (void)idx; (void)maxlen;
|
|||
|
89 .loc 1 160 1 view .LVU17
|
|||
|
90 0002 08B5 push {r3, lr}
|
|||
|
91 .LCFI0:
|
|||
|
92 .cfi_def_cfa_offset 8
|
|||
|
93 .cfi_offset 3, -8
|
|||
|
94 .cfi_offset 14, -4
|
|||
|
163:Core/Src/printf.c **** // buffer is the output fct pointer
|
|||
|
164:Core/Src/printf.c **** ((out_fct_wrap_type*)buffer)->fct(character, ((out_fct_wrap_type*)buffer)->arg);
|
|||
|
95 .loc 1 164 5 is_stmt 1 view .LVU18
|
|||
|
96 .loc 1 164 33 is_stmt 0 view .LVU19
|
|||
|
97 0004 0A68 ldr r2, [r1]
|
|||
|
98 .LVL3:
|
|||
|
99 .loc 1 164 6 view .LVU20
|
|||
|
100 0006 4968 ldr r1, [r1, #4]
|
|||
|
101 .LVL4:
|
|||
|
102 .loc 1 164 6 view .LVU21
|
|||
|
103 0008 9047 blx r2
|
|||
|
104 .LVL5:
|
|||
|
165:Core/Src/printf.c **** }
|
|||
|
166:Core/Src/printf.c **** }
|
|||
|
105 .loc 1 166 1 view .LVU22
|
|||
|
106 000a 08BD pop {r3, pc}
|
|||
|
107 .LVL6:
|
|||
|
108 .L7:
|
|||
|
109 .LCFI1:
|
|||
|
110 .cfi_def_cfa_offset 0
|
|||
|
111 .cfi_restore 3
|
|||
|
112 .cfi_restore 14
|
|||
|
113 .loc 1 166 1 view .LVU23
|
|||
|
114 000c 7047 bx lr
|
|||
|
115 .cfi_endproc
|
|||
|
116 .LFE3:
|
|||
|
118 .section .text._atoi,"ax",%progbits
|
|||
|
119 .align 1
|
|||
|
120 .syntax unified
|
|||
|
121 .thumb
|
|||
|
122 .thumb_func
|
|||
|
123 .fpu fpv5-d16
|
|||
|
125 _atoi:
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 6
|
|||
|
|
|||
|
|
|||
|
126 .LVL7:
|
|||
|
127 .LFB6:
|
|||
|
167:Core/Src/printf.c ****
|
|||
|
168:Core/Src/printf.c ****
|
|||
|
169:Core/Src/printf.c **** // internal secure strlen
|
|||
|
170:Core/Src/printf.c **** // \return The length of the string (excluding the terminating 0) limited by 'maxsize'
|
|||
|
171:Core/Src/printf.c **** static inline unsigned int _strnlen_s(const char* str, size_t maxsize)
|
|||
|
172:Core/Src/printf.c **** {
|
|||
|
173:Core/Src/printf.c **** const char* s;
|
|||
|
174:Core/Src/printf.c **** for (s = str; *s && maxsize--; ++s);
|
|||
|
175:Core/Src/printf.c **** return (unsigned int)(s - str);
|
|||
|
176:Core/Src/printf.c **** }
|
|||
|
177:Core/Src/printf.c ****
|
|||
|
178:Core/Src/printf.c ****
|
|||
|
179:Core/Src/printf.c **** // internal test if char is a digit (0-9)
|
|||
|
180:Core/Src/printf.c **** // \return true if char is a digit
|
|||
|
181:Core/Src/printf.c **** static inline bool _is_digit(char ch)
|
|||
|
182:Core/Src/printf.c **** {
|
|||
|
183:Core/Src/printf.c **** return (ch >= '0') && (ch <= '9');
|
|||
|
184:Core/Src/printf.c **** }
|
|||
|
185:Core/Src/printf.c ****
|
|||
|
186:Core/Src/printf.c ****
|
|||
|
187:Core/Src/printf.c **** // internal ASCII string to unsigned int conversion
|
|||
|
188:Core/Src/printf.c **** static unsigned int _atoi(const char** str)
|
|||
|
189:Core/Src/printf.c **** {
|
|||
|
128 .loc 1 189 1 is_stmt 1 view -0
|
|||
|
129 .cfi_startproc
|
|||
|
130 @ args = 0, pretend = 0, frame = 0
|
|||
|
131 @ frame_needed = 0, uses_anonymous_args = 0
|
|||
|
132 @ link register save eliminated.
|
|||
|
133 .loc 1 189 1 is_stmt 0 view .LVU25
|
|||
|
134 0000 0146 mov r1, r0
|
|||
|
190:Core/Src/printf.c **** unsigned int i = 0U;
|
|||
|
135 .loc 1 190 3 is_stmt 1 view .LVU26
|
|||
|
136 .LVL8:
|
|||
|
191:Core/Src/printf.c **** while (_is_digit(**str)) {
|
|||
|
137 .loc 1 191 3 view .LVU27
|
|||
|
190:Core/Src/printf.c **** unsigned int i = 0U;
|
|||
|
138 .loc 1 190 16 is_stmt 0 view .LVU28
|
|||
|
139 0002 0020 movs r0, #0
|
|||
|
140 .LVL9:
|
|||
|
141 .loc 1 191 9 view .LVU29
|
|||
|
142 0004 07E0 b .L11
|
|||
|
143 .LVL10:
|
|||
|
144 .L12:
|
|||
|
192:Core/Src/printf.c **** i = i * 10U + (unsigned int)(*((*str)++) - '0');
|
|||
|
145 .loc 1 192 5 is_stmt 1 view .LVU30
|
|||
|
146 .loc 1 192 11 is_stmt 0 view .LVU31
|
|||
|
147 0006 00EB8000 add r0, r0, r0, lsl #2
|
|||
|
148 .LVL11:
|
|||
|
149 .loc 1 192 42 view .LVU32
|
|||
|
150 000a 531C adds r3, r2, #1
|
|||
|
151 000c 0B60 str r3, [r1]
|
|||
|
152 .loc 1 192 34 view .LVU33
|
|||
|
153 000e 1378 ldrb r3, [r2] @ zero_extendqisi2
|
|||
|
154 .loc 1 192 17 view .LVU34
|
|||
|
155 0010 03EB4000 add r0, r3, r0, lsl #1
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 7
|
|||
|
|
|||
|
|
|||
|
156 .loc 1 192 7 view .LVU35
|
|||
|
157 0014 3038 subs r0, r0, #48
|
|||
|
158 .LVL12:
|
|||
|
159 .L11:
|
|||
|
191:Core/Src/printf.c **** while (_is_digit(**str)) {
|
|||
|
160 .loc 1 191 9 is_stmt 1 view .LVU36
|
|||
|
191:Core/Src/printf.c **** while (_is_digit(**str)) {
|
|||
|
161 .loc 1 191 21 is_stmt 0 view .LVU37
|
|||
|
162 0016 0A68 ldr r2, [r1]
|
|||
|
191:Core/Src/printf.c **** while (_is_digit(**str)) {
|
|||
|
163 .loc 1 191 10 view .LVU38
|
|||
|
164 0018 1378 ldrb r3, [r2] @ zero_extendqisi2
|
|||
|
165 .LVL13:
|
|||
|
166 .LBB20:
|
|||
|
167 .LBI20:
|
|||
|
181:Core/Src/printf.c **** {
|
|||
|
168 .loc 1 181 20 is_stmt 1 view .LVU39
|
|||
|
169 .LBB21:
|
|||
|
183:Core/Src/printf.c **** }
|
|||
|
170 .loc 1 183 3 view .LVU40
|
|||
|
183:Core/Src/printf.c **** }
|
|||
|
171 .loc 1 183 22 is_stmt 0 view .LVU41
|
|||
|
172 001a 303B subs r3, r3, #48
|
|||
|
173 .LVL14:
|
|||
|
183:Core/Src/printf.c **** }
|
|||
|
174 .loc 1 183 22 view .LVU42
|
|||
|
175 001c DBB2 uxtb r3, r3
|
|||
|
176 .LVL15:
|
|||
|
183:Core/Src/printf.c **** }
|
|||
|
177 .loc 1 183 22 view .LVU43
|
|||
|
178 .LBE21:
|
|||
|
179 .LBE20:
|
|||
|
191:Core/Src/printf.c **** i = i * 10U + (unsigned int)(*((*str)++) - '0');
|
|||
|
180 .loc 1 191 9 view .LVU44
|
|||
|
181 001e 092B cmp r3, #9
|
|||
|
182 0020 F1D9 bls .L12
|
|||
|
193:Core/Src/printf.c **** }
|
|||
|
194:Core/Src/printf.c **** return i;
|
|||
|
183 .loc 1 194 3 is_stmt 1 view .LVU45
|
|||
|
195:Core/Src/printf.c **** }
|
|||
|
184 .loc 1 195 1 is_stmt 0 view .LVU46
|
|||
|
185 0022 7047 bx lr
|
|||
|
186 .cfi_endproc
|
|||
|
187 .LFE6:
|
|||
|
189 .section .text._out_rev,"ax",%progbits
|
|||
|
190 .align 1
|
|||
|
191 .syntax unified
|
|||
|
192 .thumb
|
|||
|
193 .thumb_func
|
|||
|
194 .fpu fpv5-d16
|
|||
|
196 _out_rev:
|
|||
|
197 .LVL16:
|
|||
|
198 .LFB7:
|
|||
|
196:Core/Src/printf.c ****
|
|||
|
197:Core/Src/printf.c ****
|
|||
|
198:Core/Src/printf.c **** // output the specified string in reverse, taking care of any zero-padding
|
|||
|
199:Core/Src/printf.c **** static size_t _out_rev(out_fct_type out, char* buffer, size_t idx, size_t maxlen, const char* buf,
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 8
|
|||
|
|
|||
|
|
|||
|
200:Core/Src/printf.c **** {
|
|||
|
199 .loc 1 200 1 is_stmt 1 view -0
|
|||
|
200 .cfi_startproc
|
|||
|
201 @ args = 16, pretend = 0, frame = 8
|
|||
|
202 @ frame_needed = 0, uses_anonymous_args = 0
|
|||
|
203 .loc 1 200 1 is_stmt 0 view .LVU48
|
|||
|
204 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|||
|
205 .LCFI2:
|
|||
|
206 .cfi_def_cfa_offset 36
|
|||
|
207 .cfi_offset 4, -36
|
|||
|
208 .cfi_offset 5, -32
|
|||
|
209 .cfi_offset 6, -28
|
|||
|
210 .cfi_offset 7, -24
|
|||
|
211 .cfi_offset 8, -20
|
|||
|
212 .cfi_offset 9, -16
|
|||
|
213 .cfi_offset 10, -12
|
|||
|
214 .cfi_offset 11, -8
|
|||
|
215 .cfi_offset 14, -4
|
|||
|
216 0004 83B0 sub sp, sp, #12
|
|||
|
217 .LCFI3:
|
|||
|
218 .cfi_def_cfa_offset 48
|
|||
|
219 0006 0546 mov r5, r0
|
|||
|
220 0008 0E46 mov r6, r1
|
|||
|
221 000a 9346 mov fp, r2
|
|||
|
222 000c 1F46 mov r7, r3
|
|||
|
223 000e DDF830A0 ldr r10, [sp, #48]
|
|||
|
224 0012 0D9C ldr r4, [sp, #52]
|
|||
|
225 0014 DDF83890 ldr r9, [sp, #56]
|
|||
|
201:Core/Src/printf.c **** const size_t start_idx = idx;
|
|||
|
226 .loc 1 201 3 is_stmt 1 view .LVU49
|
|||
|
227 .LVL17:
|
|||
|
202:Core/Src/printf.c ****
|
|||
|
203:Core/Src/printf.c **** // pad spaces up to given width
|
|||
|
204:Core/Src/printf.c **** if (!(flags & FLAGS_LEFT) && !(flags & FLAGS_ZEROPAD)) {
|
|||
|
228 .loc 1 204 3 view .LVU50
|
|||
|
229 .loc 1 204 6 is_stmt 0 view .LVU51
|
|||
|
230 0018 0F9B ldr r3, [sp, #60]
|
|||
|
231 .LVL18:
|
|||
|
232 .loc 1 204 6 view .LVU52
|
|||
|
233 001a 13F0030F tst r3, #3
|
|||
|
234 001e 19D1 bne .L15
|
|||
|
235 .LBB22:
|
|||
|
205:Core/Src/printf.c **** for (size_t i = len; i < width; i++) {
|
|||
|
236 .loc 1 205 17 view .LVU53
|
|||
|
237 0020 A046 mov r8, r4
|
|||
|
238 .LBE22:
|
|||
|
239 0022 0192 str r2, [sp, #4]
|
|||
|
240 .LVL19:
|
|||
|
241 .L14:
|
|||
|
242 .LBB23:
|
|||
|
243 .loc 1 205 26 is_stmt 1 discriminator 1 view .LVU54
|
|||
|
244 .loc 1 205 5 is_stmt 0 discriminator 1 view .LVU55
|
|||
|
245 0024 C845 cmp r8, r9
|
|||
|
246 0026 09D2 bcs .L25
|
|||
|
206:Core/Src/printf.c **** out(' ', buffer, idx++, maxlen);
|
|||
|
247 .loc 1 206 7 is_stmt 1 discriminator 3 view .LVU56
|
|||
|
248 0028 02F1010B add fp, r2, #1
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 9
|
|||
|
|
|||
|
|
|||
|
249 .LVL20:
|
|||
|
250 .loc 1 206 7 is_stmt 0 discriminator 3 view .LVU57
|
|||
|
251 002c 3B46 mov r3, r7
|
|||
|
252 002e 3146 mov r1, r6
|
|||
|
253 0030 2020 movs r0, #32
|
|||
|
254 0032 A847 blx r5
|
|||
|
255 .LVL21:
|
|||
|
205:Core/Src/printf.c **** for (size_t i = len; i < width; i++) {
|
|||
|
256 .loc 1 205 37 is_stmt 1 discriminator 3 view .LVU58
|
|||
|
205:Core/Src/printf.c **** for (size_t i = len; i < width; i++) {
|
|||
|
257 .loc 1 205 38 is_stmt 0 discriminator 3 view .LVU59
|
|||
|
258 0034 08F10108 add r8, r8, #1
|
|||
|
259 .LVL22:
|
|||
|
260 .loc 1 206 7 discriminator 3 view .LVU60
|
|||
|
261 0038 5A46 mov r2, fp
|
|||
|
262 003a F3E7 b .L14
|
|||
|
263 .LVL23:
|
|||
|
264 .L25:
|
|||
|
265 .loc 1 206 7 discriminator 3 view .LVU61
|
|||
|
266 003c DDF804B0 ldr fp, [sp, #4]
|
|||
|
267 0040 08E0 b .L15
|
|||
|
268 .LVL24:
|
|||
|
269 .L18:
|
|||
|
270 .loc 1 206 7 discriminator 3 view .LVU62
|
|||
|
271 .LBE23:
|
|||
|
207:Core/Src/printf.c **** }
|
|||
|
208:Core/Src/printf.c **** }
|
|||
|
209:Core/Src/printf.c ****
|
|||
|
210:Core/Src/printf.c **** // reverse string
|
|||
|
211:Core/Src/printf.c **** while (len) {
|
|||
|
212:Core/Src/printf.c **** out(buf[--len], buffer, idx++, maxlen);
|
|||
|
272 .loc 1 212 5 is_stmt 1 view .LVU63
|
|||
|
273 0042 013C subs r4, r4, #1
|
|||
|
274 .LVL25:
|
|||
|
275 .loc 1 212 5 is_stmt 0 view .LVU64
|
|||
|
276 0044 02F10108 add r8, r2, #1
|
|||
|
277 .LVL26:
|
|||
|
278 .loc 1 212 5 view .LVU65
|
|||
|
279 0048 3B46 mov r3, r7
|
|||
|
280 004a 3146 mov r1, r6
|
|||
|
281 004c 1AF80400 ldrb r0, [r10, r4] @ zero_extendqisi2
|
|||
|
282 0050 A847 blx r5
|
|||
|
283 .LVL27:
|
|||
|
284 0052 4246 mov r2, r8
|
|||
|
285 .LVL28:
|
|||
|
286 .L15:
|
|||
|
211:Core/Src/printf.c **** out(buf[--len], buffer, idx++, maxlen);
|
|||
|
287 .loc 1 211 9 is_stmt 1 view .LVU66
|
|||
|
288 0054 002C cmp r4, #0
|
|||
|
289 0056 F4D1 bne .L18
|
|||
|
213:Core/Src/printf.c **** }
|
|||
|
214:Core/Src/printf.c ****
|
|||
|
215:Core/Src/printf.c **** // append pad spaces up to given width
|
|||
|
216:Core/Src/printf.c **** if (flags & FLAGS_LEFT) {
|
|||
|
290 .loc 1 216 3 view .LVU67
|
|||
|
291 .loc 1 216 6 is_stmt 0 view .LVU68
|
|||
|
292 0058 0F9B ldr r3, [sp, #60]
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 10
|
|||
|
|
|||
|
|
|||
|
293 005a 13F0020F tst r3, #2
|
|||
|
294 005e 03D1 bne .L19
|
|||
|
295 .LVL29:
|
|||
|
296 .L13:
|
|||
|
217:Core/Src/printf.c **** while (idx - start_idx < width) {
|
|||
|
218:Core/Src/printf.c **** out(' ', buffer, idx++, maxlen);
|
|||
|
219:Core/Src/printf.c **** }
|
|||
|
220:Core/Src/printf.c **** }
|
|||
|
221:Core/Src/printf.c ****
|
|||
|
222:Core/Src/printf.c **** return idx;
|
|||
|
223:Core/Src/printf.c **** }
|
|||
|
297 .loc 1 223 1 view .LVU69
|
|||
|
298 0060 1046 mov r0, r2
|
|||
|
299 0062 03B0 add sp, sp, #12
|
|||
|
300 .LCFI4:
|
|||
|
301 .cfi_remember_state
|
|||
|
302 .cfi_def_cfa_offset 36
|
|||
|
303 @ sp needed
|
|||
|
304 0064 BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|||
|
305 .LVL30:
|
|||
|
306 .L19:
|
|||
|
307 .LCFI5:
|
|||
|
308 .cfi_restore_state
|
|||
|
217:Core/Src/printf.c **** while (idx - start_idx < width) {
|
|||
|
309 .loc 1 217 11 is_stmt 1 view .LVU70
|
|||
|
217:Core/Src/printf.c **** while (idx - start_idx < width) {
|
|||
|
310 .loc 1 217 16 is_stmt 0 view .LVU71
|
|||
|
311 0068 A2EB0B03 sub r3, r2, fp
|
|||
|
217:Core/Src/printf.c **** while (idx - start_idx < width) {
|
|||
|
312 .loc 1 217 11 view .LVU72
|
|||
|
313 006c 4B45 cmp r3, r9
|
|||
|
314 006e F7D2 bcs .L13
|
|||
|
218:Core/Src/printf.c **** }
|
|||
|
315 .loc 1 218 7 is_stmt 1 view .LVU73
|
|||
|
316 0070 541C adds r4, r2, #1
|
|||
|
317 .LVL31:
|
|||
|
218:Core/Src/printf.c **** }
|
|||
|
318 .loc 1 218 7 is_stmt 0 view .LVU74
|
|||
|
319 0072 3B46 mov r3, r7
|
|||
|
320 0074 3146 mov r1, r6
|
|||
|
321 0076 2020 movs r0, #32
|
|||
|
322 0078 A847 blx r5
|
|||
|
323 .LVL32:
|
|||
|
324 007a 2246 mov r2, r4
|
|||
|
325 007c F4E7 b .L19
|
|||
|
326 .cfi_endproc
|
|||
|
327 .LFE7:
|
|||
|
329 .section .text._ntoa_format,"ax",%progbits
|
|||
|
330 .align 1
|
|||
|
331 .syntax unified
|
|||
|
332 .thumb
|
|||
|
333 .thumb_func
|
|||
|
334 .fpu fpv5-d16
|
|||
|
336 _ntoa_format:
|
|||
|
337 .LVL33:
|
|||
|
338 .LFB8:
|
|||
|
224:Core/Src/printf.c ****
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 11
|
|||
|
|
|||
|
|
|||
|
225:Core/Src/printf.c ****
|
|||
|
226:Core/Src/printf.c **** // internal itoa format
|
|||
|
227:Core/Src/printf.c **** static size_t _ntoa_format(out_fct_type out, char* buffer, size_t idx, size_t maxlen, char* buf, si
|
|||
|
228:Core/Src/printf.c **** {
|
|||
|
339 .loc 1 228 1 is_stmt 1 view -0
|
|||
|
340 .cfi_startproc
|
|||
|
341 @ args = 28, pretend = 0, frame = 0
|
|||
|
342 @ frame_needed = 0, uses_anonymous_args = 0
|
|||
|
343 .loc 1 228 1 is_stmt 0 view .LVU76
|
|||
|
344 0000 2DE9F043 push {r4, r5, r6, r7, r8, r9, lr}
|
|||
|
345 .LCFI6:
|
|||
|
346 .cfi_def_cfa_offset 28
|
|||
|
347 .cfi_offset 4, -28
|
|||
|
348 .cfi_offset 5, -24
|
|||
|
349 .cfi_offset 6, -20
|
|||
|
350 .cfi_offset 7, -16
|
|||
|
351 .cfi_offset 8, -12
|
|||
|
352 .cfi_offset 9, -8
|
|||
|
353 .cfi_offset 14, -4
|
|||
|
354 0004 85B0 sub sp, sp, #20
|
|||
|
355 .LCFI7:
|
|||
|
356 .cfi_def_cfa_offset 48
|
|||
|
357 0006 9E46 mov lr, r3
|
|||
|
358 0008 0C9D ldr r5, [sp, #48]
|
|||
|
359 000a 0D9C ldr r4, [sp, #52]
|
|||
|
360 000c 9DF83890 ldrb r9, [sp, #56] @ zero_extendqisi2
|
|||
|
361 0010 DDF83C80 ldr r8, [sp, #60]
|
|||
|
362 0014 DDF840C0 ldr ip, [sp, #64]
|
|||
|
363 0018 119B ldr r3, [sp, #68]
|
|||
|
364 .LVL34:
|
|||
|
365 .loc 1 228 1 view .LVU77
|
|||
|
366 001a 129E ldr r6, [sp, #72]
|
|||
|
229:Core/Src/printf.c **** // pad leading zeros
|
|||
|
230:Core/Src/printf.c **** if (!(flags & FLAGS_LEFT)) {
|
|||
|
367 .loc 1 230 3 is_stmt 1 view .LVU78
|
|||
|
368 .loc 1 230 6 is_stmt 0 view .LVU79
|
|||
|
369 001c 16F0020F tst r6, #2
|
|||
|
370 0020 20D1 bne .L27
|
|||
|
231:Core/Src/printf.c **** if (width && (flags & FLAGS_ZEROPAD) && (negative || (flags & (FLAGS_PLUS | FLAGS_SPACE)))) {
|
|||
|
371 .loc 1 231 5 is_stmt 1 view .LVU80
|
|||
|
372 .loc 1 231 8 is_stmt 0 view .LVU81
|
|||
|
373 0022 6BB1 cbz r3, .L30
|
|||
|
374 .loc 1 231 15 discriminator 1 view .LVU82
|
|||
|
375 0024 16F0010F tst r6, #1
|
|||
|
376 0028 0AD0 beq .L30
|
|||
|
377 .loc 1 231 42 discriminator 2 view .LVU83
|
|||
|
378 002a B9F1000F cmp r9, #0
|
|||
|
379 002e 02D1 bne .L29
|
|||
|
380 .loc 1 231 55 discriminator 3 view .LVU84
|
|||
|
381 0030 16F00C0F tst r6, #12
|
|||
|
382 0034 04D0 beq .L30
|
|||
|
383 .L29:
|
|||
|
232:Core/Src/printf.c **** width--;
|
|||
|
384 .loc 1 232 7 is_stmt 1 view .LVU85
|
|||
|
385 .loc 1 232 12 is_stmt 0 view .LVU86
|
|||
|
386 0036 013B subs r3, r3, #1
|
|||
|
387 .LVL35:
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 12
|
|||
|
|
|||
|
|
|||
|
388 .loc 1 232 12 view .LVU87
|
|||
|
389 0038 02E0 b .L30
|
|||
|
390 .LVL36:
|
|||
|
391 .L31:
|
|||
|
233:Core/Src/printf.c **** }
|
|||
|
234:Core/Src/printf.c **** while ((len < prec) && (len < PRINTF_NTOA_BUFFER_SIZE)) {
|
|||
|
235:Core/Src/printf.c **** buf[len++] = '0';
|
|||
|
392 .loc 1 235 7 is_stmt 1 view .LVU88
|
|||
|
393 .loc 1 235 18 is_stmt 0 view .LVU89
|
|||
|
394 003a 3027 movs r7, #48
|
|||
|
395 003c 2F55 strb r7, [r5, r4]
|
|||
|
396 .loc 1 235 14 view .LVU90
|
|||
|
397 003e 0134 adds r4, r4, #1
|
|||
|
398 .LVL37:
|
|||
|
399 .L30:
|
|||
|
234:Core/Src/printf.c **** buf[len++] = '0';
|
|||
|
400 .loc 1 234 11 is_stmt 1 view .LVU91
|
|||
|
401 0040 1F2C cmp r4, #31
|
|||
|
402 0042 98BF it ls
|
|||
|
403 0044 6445 cmpls r4, ip
|
|||
|
404 0046 F8D3 bcc .L31
|
|||
|
405 .L32:
|
|||
|
236:Core/Src/printf.c **** }
|
|||
|
237:Core/Src/printf.c **** while ((flags & FLAGS_ZEROPAD) && (len < width) && (len < PRINTF_NTOA_BUFFER_SIZE)) {
|
|||
|
406 .loc 1 237 11 view .LVU92
|
|||
|
407 0048 16F0010F tst r6, #1
|
|||
|
408 004c 0AD0 beq .L27
|
|||
|
409 .loc 1 237 61 is_stmt 0 discriminator 1 view .LVU93
|
|||
|
410 004e 1F2C cmp r4, #31
|
|||
|
411 0050 8CBF ite hi
|
|||
|
412 0052 0027 movhi r7, #0
|
|||
|
413 0054 0127 movls r7, #1
|
|||
|
414 .loc 1 237 53 discriminator 1 view .LVU94
|
|||
|
415 0056 9C42 cmp r4, r3
|
|||
|
416 0058 04D2 bcs .L27
|
|||
|
417 005a 1FB1 cbz r7, .L27
|
|||
|
238:Core/Src/printf.c **** buf[len++] = '0';
|
|||
|
418 .loc 1 238 7 is_stmt 1 view .LVU95
|
|||
|
419 .LVL38:
|
|||
|
420 .loc 1 238 18 is_stmt 0 view .LVU96
|
|||
|
421 005c 3027 movs r7, #48
|
|||
|
422 005e 2F55 strb r7, [r5, r4]
|
|||
|
423 .loc 1 238 14 view .LVU97
|
|||
|
424 0060 0134 adds r4, r4, #1
|
|||
|
425 .LVL39:
|
|||
|
426 .loc 1 238 14 view .LVU98
|
|||
|
427 0062 F1E7 b .L32
|
|||
|
428 .LVL40:
|
|||
|
429 .L27:
|
|||
|
239:Core/Src/printf.c **** }
|
|||
|
240:Core/Src/printf.c **** }
|
|||
|
241:Core/Src/printf.c ****
|
|||
|
242:Core/Src/printf.c **** // handle hash
|
|||
|
243:Core/Src/printf.c **** if (flags & FLAGS_HASH) {
|
|||
|
430 .loc 1 243 3 is_stmt 1 view .LVU99
|
|||
|
431 .loc 1 243 6 is_stmt 0 view .LVU100
|
|||
|
432 0064 16F0100F tst r6, #16
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 13
|
|||
|
|
|||
|
|
|||
|
433 0068 27D0 beq .L35
|
|||
|
244:Core/Src/printf.c **** if (!(flags & FLAGS_PRECISION) && len && ((len == prec) || (len == width))) {
|
|||
|
434 .loc 1 244 5 is_stmt 1 view .LVU101
|
|||
|
435 .loc 1 244 8 is_stmt 0 view .LVU102
|
|||
|
436 006a 16F4806F tst r6, #1024
|
|||
|
437 006e 11D1 bne .L36
|
|||
|
438 .loc 1 244 36 discriminator 1 view .LVU103
|
|||
|
439 0070 84B1 cbz r4, .L36
|
|||
|
440 .loc 1 244 43 discriminator 2 view .LVU104
|
|||
|
441 0072 9C42 cmp r4, r3
|
|||
|
442 0074 18BF it ne
|
|||
|
443 0076 6445 cmpne r4, ip
|
|||
|
444 0078 0CD1 bne .L36
|
|||
|
245:Core/Src/printf.c **** len--;
|
|||
|
445 .loc 1 245 7 is_stmt 1 view .LVU105
|
|||
|
446 .LVL41:
|
|||
|
246:Core/Src/printf.c **** if (len && (base == 16U)) {
|
|||
|
447 .loc 1 246 7 view .LVU106
|
|||
|
448 .loc 1 246 11 is_stmt 0 view .LVU107
|
|||
|
449 007a B4F1010C subs ip, r4, #1
|
|||
|
450 .LVL42:
|
|||
|
451 .loc 1 246 11 view .LVU108
|
|||
|
452 007e 14BF ite ne
|
|||
|
453 0080 0127 movne r7, #1
|
|||
|
454 0082 0027 moveq r7, #0
|
|||
|
455 .loc 1 246 15 view .LVU109
|
|||
|
456 0084 B8F1100F cmp r8, #16
|
|||
|
457 0088 14BF ite ne
|
|||
|
458 008a 0027 movne r7, #0
|
|||
|
459 008c 07F00107 andeq r7, r7, #1
|
|||
|
460 .loc 1 246 10 view .LVU110
|
|||
|
461 0090 2FB3 cbz r7, .L43
|
|||
|
247:Core/Src/printf.c **** len--;
|
|||
|
462 .loc 1 247 9 is_stmt 1 view .LVU111
|
|||
|
463 .loc 1 247 12 is_stmt 0 view .LVU112
|
|||
|
464 0092 023C subs r4, r4, #2
|
|||
|
465 .LVL43:
|
|||
|
466 .L36:
|
|||
|
248:Core/Src/printf.c **** }
|
|||
|
249:Core/Src/printf.c **** }
|
|||
|
250:Core/Src/printf.c **** if ((base == 16U) && !(flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) {
|
|||
|
467 .loc 1 250 5 is_stmt 1 view .LVU113
|
|||
|
468 .loc 1 250 8 is_stmt 0 view .LVU114
|
|||
|
469 0094 B8F1100F cmp r8, #16
|
|||
|
470 0098 23D0 beq .L45
|
|||
|
471 .L37:
|
|||
|
251:Core/Src/printf.c **** buf[len++] = 'x';
|
|||
|
252:Core/Src/printf.c **** }
|
|||
|
253:Core/Src/printf.c **** else if ((base == 16U) && (flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) {
|
|||
|
472 .loc 1 253 10 is_stmt 1 view .LVU115
|
|||
|
473 .loc 1 253 13 is_stmt 0 view .LVU116
|
|||
|
474 009a B8F1100F cmp r8, #16
|
|||
|
475 009e 29D0 beq .L46
|
|||
|
476 .L39:
|
|||
|
254:Core/Src/printf.c **** buf[len++] = 'X';
|
|||
|
255:Core/Src/printf.c **** }
|
|||
|
256:Core/Src/printf.c **** else if ((base == 2U) && (len < PRINTF_NTOA_BUFFER_SIZE)) {
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 14
|
|||
|
|
|||
|
|
|||
|
477 .loc 1 256 10 is_stmt 1 view .LVU117
|
|||
|
478 .loc 1 256 13 is_stmt 0 view .LVU118
|
|||
|
479 00a0 1F2C cmp r4, #31
|
|||
|
480 00a2 98BF it ls
|
|||
|
481 00a4 B8F1020F cmpls r8, #2
|
|||
|
482 00a8 02D1 bne .L38
|
|||
|
257:Core/Src/printf.c **** buf[len++] = 'b';
|
|||
|
483 .loc 1 257 7 is_stmt 1 view .LVU119
|
|||
|
484 .LVL44:
|
|||
|
485 .loc 1 257 18 is_stmt 0 view .LVU120
|
|||
|
486 00aa 6227 movs r7, #98
|
|||
|
487 00ac 2F55 strb r7, [r5, r4]
|
|||
|
488 .loc 1 257 14 view .LVU121
|
|||
|
489 00ae 0134 adds r4, r4, #1
|
|||
|
490 .LVL45:
|
|||
|
491 .L38:
|
|||
|
258:Core/Src/printf.c **** }
|
|||
|
259:Core/Src/printf.c **** if (len < PRINTF_NTOA_BUFFER_SIZE) {
|
|||
|
492 .loc 1 259 5 is_stmt 1 view .LVU122
|
|||
|
493 .loc 1 259 8 is_stmt 0 view .LVU123
|
|||
|
494 00b0 1F2C cmp r4, #31
|
|||
|
495 00b2 02D8 bhi .L35
|
|||
|
260:Core/Src/printf.c **** buf[len++] = '0';
|
|||
|
496 .loc 1 260 7 is_stmt 1 view .LVU124
|
|||
|
497 .LVL46:
|
|||
|
498 .loc 1 260 18 is_stmt 0 view .LVU125
|
|||
|
499 00b4 3027 movs r7, #48
|
|||
|
500 00b6 2F55 strb r7, [r5, r4]
|
|||
|
501 .loc 1 260 14 view .LVU126
|
|||
|
502 00b8 0134 adds r4, r4, #1
|
|||
|
503 .LVL47:
|
|||
|
504 .L35:
|
|||
|
261:Core/Src/printf.c **** }
|
|||
|
262:Core/Src/printf.c **** }
|
|||
|
263:Core/Src/printf.c ****
|
|||
|
264:Core/Src/printf.c **** if (len < PRINTF_NTOA_BUFFER_SIZE) {
|
|||
|
505 .loc 1 264 3 is_stmt 1 view .LVU127
|
|||
|
506 .loc 1 264 6 is_stmt 0 view .LVU128
|
|||
|
507 00ba 1F2C cmp r4, #31
|
|||
|
508 00bc 05D8 bhi .L40
|
|||
|
265:Core/Src/printf.c **** if (negative) {
|
|||
|
509 .loc 1 265 5 is_stmt 1 view .LVU129
|
|||
|
510 .loc 1 265 8 is_stmt 0 view .LVU130
|
|||
|
511 00be B9F1000F cmp r9, #0
|
|||
|
512 00c2 20D0 beq .L41
|
|||
|
266:Core/Src/printf.c **** buf[len++] = '-';
|
|||
|
513 .loc 1 266 7 is_stmt 1 view .LVU131
|
|||
|
514 .LVL48:
|
|||
|
515 .loc 1 266 18 is_stmt 0 view .LVU132
|
|||
|
516 00c4 2D27 movs r7, #45
|
|||
|
517 00c6 2F55 strb r7, [r5, r4]
|
|||
|
518 .loc 1 266 14 view .LVU133
|
|||
|
519 00c8 0134 adds r4, r4, #1
|
|||
|
520 .LVL49:
|
|||
|
521 .L40:
|
|||
|
267:Core/Src/printf.c **** }
|
|||
|
268:Core/Src/printf.c **** else if (flags & FLAGS_PLUS) {
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 15
|
|||
|
|
|||
|
|
|||
|
269:Core/Src/printf.c **** buf[len++] = '+'; // ignore the space if the '+' exists
|
|||
|
270:Core/Src/printf.c **** }
|
|||
|
271:Core/Src/printf.c **** else if (flags & FLAGS_SPACE) {
|
|||
|
272:Core/Src/printf.c **** buf[len++] = ' ';
|
|||
|
273:Core/Src/printf.c **** }
|
|||
|
274:Core/Src/printf.c **** }
|
|||
|
275:Core/Src/printf.c ****
|
|||
|
276:Core/Src/printf.c **** return _out_rev(out, buffer, idx, maxlen, buf, len, width, flags);
|
|||
|
522 .loc 1 276 3 is_stmt 1 view .LVU134
|
|||
|
523 .loc 1 276 10 is_stmt 0 view .LVU135
|
|||
|
524 00ca 0396 str r6, [sp, #12]
|
|||
|
525 00cc 0293 str r3, [sp, #8]
|
|||
|
526 00ce 0194 str r4, [sp, #4]
|
|||
|
527 00d0 0095 str r5, [sp]
|
|||
|
528 00d2 7346 mov r3, lr
|
|||
|
529 .LVL50:
|
|||
|
530 .loc 1 276 10 view .LVU136
|
|||
|
531 00d4 FFF7FEFF bl _out_rev
|
|||
|
532 .LVL51:
|
|||
|
277:Core/Src/printf.c **** }
|
|||
|
533 .loc 1 277 1 view .LVU137
|
|||
|
534 00d8 05B0 add sp, sp, #20
|
|||
|
535 .LCFI8:
|
|||
|
536 .cfi_remember_state
|
|||
|
537 .cfi_def_cfa_offset 28
|
|||
|
538 @ sp needed
|
|||
|
539 00da BDE8F083 pop {r4, r5, r6, r7, r8, r9, pc}
|
|||
|
540 .LVL52:
|
|||
|
541 .L43:
|
|||
|
542 .LCFI9:
|
|||
|
543 .cfi_restore_state
|
|||
|
245:Core/Src/printf.c **** if (len && (base == 16U)) {
|
|||
|
544 .loc 1 245 10 view .LVU138
|
|||
|
545 00de 6446 mov r4, ip
|
|||
|
546 00e0 D8E7 b .L36
|
|||
|
547 .LVL53:
|
|||
|
548 .L45:
|
|||
|
250:Core/Src/printf.c **** buf[len++] = 'x';
|
|||
|
549 .loc 1 250 23 discriminator 1 view .LVU139
|
|||
|
550 00e2 16F0200F tst r6, #32
|
|||
|
551 00e6 D8D1 bne .L37
|
|||
|
250:Core/Src/printf.c **** buf[len++] = 'x';
|
|||
|
552 .loc 1 250 53 discriminator 2 view .LVU140
|
|||
|
553 00e8 1F2C cmp r4, #31
|
|||
|
554 00ea D6D8 bhi .L37
|
|||
|
251:Core/Src/printf.c **** }
|
|||
|
555 .loc 1 251 7 is_stmt 1 view .LVU141
|
|||
|
556 .LVL54:
|
|||
|
251:Core/Src/printf.c **** }
|
|||
|
557 .loc 1 251 18 is_stmt 0 view .LVU142
|
|||
|
558 00ec 7827 movs r7, #120
|
|||
|
559 00ee 2F55 strb r7, [r5, r4]
|
|||
|
251:Core/Src/printf.c **** }
|
|||
|
560 .loc 1 251 14 view .LVU143
|
|||
|
561 00f0 0134 adds r4, r4, #1
|
|||
|
562 .LVL55:
|
|||
|
251:Core/Src/printf.c **** }
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 16
|
|||
|
|
|||
|
|
|||
|
563 .loc 1 251 18 view .LVU144
|
|||
|
564 00f2 DDE7 b .L38
|
|||
|
565 .L46:
|
|||
|
253:Core/Src/printf.c **** buf[len++] = 'X';
|
|||
|
566 .loc 1 253 28 discriminator 1 view .LVU145
|
|||
|
567 00f4 16F0200F tst r6, #32
|
|||
|
568 00f8 D2D0 beq .L39
|
|||
|
253:Core/Src/printf.c **** buf[len++] = 'X';
|
|||
|
569 .loc 1 253 57 discriminator 2 view .LVU146
|
|||
|
570 00fa 1F2C cmp r4, #31
|
|||
|
571 00fc D0D8 bhi .L39
|
|||
|
254:Core/Src/printf.c **** }
|
|||
|
572 .loc 1 254 7 is_stmt 1 view .LVU147
|
|||
|
573 .LVL56:
|
|||
|
254:Core/Src/printf.c **** }
|
|||
|
574 .loc 1 254 18 is_stmt 0 view .LVU148
|
|||
|
575 00fe 5827 movs r7, #88
|
|||
|
576 0100 2F55 strb r7, [r5, r4]
|
|||
|
254:Core/Src/printf.c **** }
|
|||
|
577 .loc 1 254 14 view .LVU149
|
|||
|
578 0102 0134 adds r4, r4, #1
|
|||
|
579 .LVL57:
|
|||
|
254:Core/Src/printf.c **** }
|
|||
|
580 .loc 1 254 18 view .LVU150
|
|||
|
581 0104 D4E7 b .L38
|
|||
|
582 .L41:
|
|||
|
268:Core/Src/printf.c **** buf[len++] = '+'; // ignore the space if the '+' exists
|
|||
|
583 .loc 1 268 10 is_stmt 1 view .LVU151
|
|||
|
268:Core/Src/printf.c **** buf[len++] = '+'; // ignore the space if the '+' exists
|
|||
|
584 .loc 1 268 13 is_stmt 0 view .LVU152
|
|||
|
585 0106 16F0040F tst r6, #4
|
|||
|
586 010a 03D0 beq .L42
|
|||
|
269:Core/Src/printf.c **** }
|
|||
|
587 .loc 1 269 7 is_stmt 1 view .LVU153
|
|||
|
588 .LVL58:
|
|||
|
269:Core/Src/printf.c **** }
|
|||
|
589 .loc 1 269 18 is_stmt 0 view .LVU154
|
|||
|
590 010c 2B27 movs r7, #43
|
|||
|
591 010e 2F55 strb r7, [r5, r4]
|
|||
|
269:Core/Src/printf.c **** }
|
|||
|
592 .loc 1 269 14 view .LVU155
|
|||
|
593 0110 0134 adds r4, r4, #1
|
|||
|
594 .LVL59:
|
|||
|
269:Core/Src/printf.c **** }
|
|||
|
595 .loc 1 269 14 view .LVU156
|
|||
|
596 0112 DAE7 b .L40
|
|||
|
597 .L42:
|
|||
|
271:Core/Src/printf.c **** buf[len++] = ' ';
|
|||
|
598 .loc 1 271 10 is_stmt 1 view .LVU157
|
|||
|
271:Core/Src/printf.c **** buf[len++] = ' ';
|
|||
|
599 .loc 1 271 13 is_stmt 0 view .LVU158
|
|||
|
600 0114 16F0080F tst r6, #8
|
|||
|
601 0118 D7D0 beq .L40
|
|||
|
272:Core/Src/printf.c **** }
|
|||
|
602 .loc 1 272 7 is_stmt 1 view .LVU159
|
|||
|
603 .LVL60:
|
|||
|
272:Core/Src/printf.c **** }
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 17
|
|||
|
|
|||
|
|
|||
|
604 .loc 1 272 18 is_stmt 0 view .LVU160
|
|||
|
605 011a 2027 movs r7, #32
|
|||
|
606 011c 2F55 strb r7, [r5, r4]
|
|||
|
272:Core/Src/printf.c **** }
|
|||
|
607 .loc 1 272 14 view .LVU161
|
|||
|
608 011e 0134 adds r4, r4, #1
|
|||
|
609 .LVL61:
|
|||
|
272:Core/Src/printf.c **** }
|
|||
|
610 .loc 1 272 14 view .LVU162
|
|||
|
611 0120 D3E7 b .L40
|
|||
|
612 .cfi_endproc
|
|||
|
613 .LFE8:
|
|||
|
615 .section .text._ntoa_long,"ax",%progbits
|
|||
|
616 .align 1
|
|||
|
617 .syntax unified
|
|||
|
618 .thumb
|
|||
|
619 .thumb_func
|
|||
|
620 .fpu fpv5-d16
|
|||
|
622 _ntoa_long:
|
|||
|
623 .LVL62:
|
|||
|
624 .LFB9:
|
|||
|
278:Core/Src/printf.c ****
|
|||
|
279:Core/Src/printf.c ****
|
|||
|
280:Core/Src/printf.c **** // internal itoa for 'long' type
|
|||
|
281:Core/Src/printf.c **** static size_t _ntoa_long(out_fct_type out, char* buffer, size_t idx, size_t maxlen, unsigned long v
|
|||
|
282:Core/Src/printf.c **** {
|
|||
|
625 .loc 1 282 1 is_stmt 1 view -0
|
|||
|
626 .cfi_startproc
|
|||
|
627 @ args = 24, pretend = 0, frame = 32
|
|||
|
628 @ frame_needed = 0, uses_anonymous_args = 0
|
|||
|
629 .loc 1 282 1 is_stmt 0 view .LVU164
|
|||
|
630 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr}
|
|||
|
631 .LCFI10:
|
|||
|
632 .cfi_def_cfa_offset 24
|
|||
|
633 .cfi_offset 4, -24
|
|||
|
634 .cfi_offset 5, -20
|
|||
|
635 .cfi_offset 6, -16
|
|||
|
636 .cfi_offset 7, -12
|
|||
|
637 .cfi_offset 8, -8
|
|||
|
638 .cfi_offset 14, -4
|
|||
|
639 0004 90B0 sub sp, sp, #64
|
|||
|
640 .LCFI11:
|
|||
|
641 .cfi_def_cfa_offset 88
|
|||
|
642 0006 169C ldr r4, [sp, #88]
|
|||
|
643 0008 189D ldr r5, [sp, #96]
|
|||
|
644 000a 1B9E ldr r6, [sp, #108]
|
|||
|
283:Core/Src/printf.c **** char buf[PRINTF_NTOA_BUFFER_SIZE];
|
|||
|
645 .loc 1 283 3 is_stmt 1 view .LVU165
|
|||
|
284:Core/Src/printf.c **** size_t len = 0U;
|
|||
|
646 .loc 1 284 3 view .LVU166
|
|||
|
647 .LVL63:
|
|||
|
285:Core/Src/printf.c ****
|
|||
|
286:Core/Src/printf.c **** // no hash for 0 values
|
|||
|
287:Core/Src/printf.c **** if (!value) {
|
|||
|
648 .loc 1 287 3 view .LVU167
|
|||
|
649 .loc 1 287 6 is_stmt 0 view .LVU168
|
|||
|
650 000c 0CB9 cbnz r4, .L48
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 18
|
|||
|
|
|||
|
|
|||
|
288:Core/Src/printf.c **** flags &= ~FLAGS_HASH;
|
|||
|
651 .loc 1 288 5 is_stmt 1 view .LVU169
|
|||
|
652 .loc 1 288 11 is_stmt 0 view .LVU170
|
|||
|
653 000e 26F01006 bic r6, r6, #16
|
|||
|
654 .LVL64:
|
|||
|
655 .L48:
|
|||
|
289:Core/Src/printf.c **** }
|
|||
|
290:Core/Src/printf.c ****
|
|||
|
291:Core/Src/printf.c **** // write if precision != 0 and value is != 0
|
|||
|
292:Core/Src/printf.c **** if (!(flags & FLAGS_PRECISION) || value) {
|
|||
|
656 .loc 1 292 3 is_stmt 1 view .LVU171
|
|||
|
657 .loc 1 292 6 is_stmt 0 view .LVU172
|
|||
|
658 0012 16F4806E ands lr, r6, #1024
|
|||
|
659 0016 1AD0 beq .L54
|
|||
|
660 .loc 1 292 34 discriminator 1 view .LVU173
|
|||
|
661 0018 84B3 cbz r4, .L55
|
|||
|
662 001a 4FF0000E mov lr, #0
|
|||
|
663 001e 16E0 b .L54
|
|||
|
664 .LVL65:
|
|||
|
665 .L59:
|
|||
|
666 .LBB24:
|
|||
|
293:Core/Src/printf.c **** do {
|
|||
|
294:Core/Src/printf.c **** const char digit = (char)(value % base);
|
|||
|
295:Core/Src/printf.c **** buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10;
|
|||
|
667 .loc 1 295 18 discriminator 1 view .LVU174
|
|||
|
668 0020 0CF1300C add ip, ip, #48
|
|||
|
669 .LVL66:
|
|||
|
670 .loc 1 295 18 discriminator 1 view .LVU175
|
|||
|
671 0024 5FFA8CFC uxtb ip, ip
|
|||
|
672 .LVL67:
|
|||
|
673 .L52:
|
|||
|
674 .loc 1 295 14 discriminator 8 view .LVU176
|
|||
|
675 0028 0EF10107 add r7, lr, #1
|
|||
|
676 .LVL68:
|
|||
|
677 .loc 1 295 18 discriminator 8 view .LVU177
|
|||
|
678 002c 0DF14008 add r8, sp, #64
|
|||
|
679 0030 C644 add lr, lr, r8
|
|||
|
680 0032 0EF820CC strb ip, [lr, #-32]
|
|||
|
296:Core/Src/printf.c **** value /= base;
|
|||
|
681 .loc 1 296 7 is_stmt 1 discriminator 8 view .LVU178
|
|||
|
682 .loc 1 296 13 is_stmt 0 discriminator 8 view .LVU179
|
|||
|
683 0036 B4FBF5FC udiv ip, r4, r5
|
|||
|
684 .LVL69:
|
|||
|
685 .loc 1 296 13 discriminator 8 view .LVU180
|
|||
|
686 .LBE24:
|
|||
|
297:Core/Src/printf.c **** } while (value && (len < PRINTF_NTOA_BUFFER_SIZE));
|
|||
|
687 .loc 1 297 13 is_stmt 1 discriminator 8 view .LVU181
|
|||
|
688 .loc 1 297 20 is_stmt 0 discriminator 8 view .LVU182
|
|||
|
689 003a AC42 cmp r4, r5
|
|||
|
690 003c 34BF ite cc
|
|||
|
691 003e 0024 movcc r4, #0
|
|||
|
692 .LVL70:
|
|||
|
693 .loc 1 297 20 discriminator 8 view .LVU183
|
|||
|
694 0040 0124 movcs r4, #1
|
|||
|
695 0042 1F2F cmp r7, #31
|
|||
|
696 0044 88BF it hi
|
|||
|
697 0046 0024 movhi r4, #0
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 19
|
|||
|
|
|||
|
|
|||
|
698 .loc 1 297 5 discriminator 8 view .LVU184
|
|||
|
699 0048 CCB1 cbz r4, .L50
|
|||
|
700 .LBB25:
|
|||
|
295:Core/Src/printf.c **** value /= base;
|
|||
|
701 .loc 1 295 14 view .LVU185
|
|||
|
702 004a BE46 mov lr, r7
|
|||
|
296:Core/Src/printf.c **** value /= base;
|
|||
|
703 .loc 1 296 13 view .LVU186
|
|||
|
704 004c 6446 mov r4, ip
|
|||
|
705 .LVL71:
|
|||
|
706 .L54:
|
|||
|
296:Core/Src/printf.c **** value /= base;
|
|||
|
707 .loc 1 296 13 view .LVU187
|
|||
|
708 .LBE25:
|
|||
|
293:Core/Src/printf.c **** const char digit = (char)(value % base);
|
|||
|
709 .loc 1 293 5 is_stmt 1 view .LVU188
|
|||
|
710 .LBB26:
|
|||
|
294:Core/Src/printf.c **** buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10;
|
|||
|
711 .loc 1 294 7 view .LVU189
|
|||
|
294:Core/Src/printf.c **** buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10;
|
|||
|
712 .loc 1 294 39 is_stmt 0 view .LVU190
|
|||
|
713 004e B4FBF5FC udiv ip, r4, r5
|
|||
|
714 0052 05FB1C4C mls ip, r5, ip, r4
|
|||
|
294:Core/Src/printf.c **** buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10;
|
|||
|
715 .loc 1 294 18 view .LVU191
|
|||
|
716 0056 5FFA8CFC uxtb ip, ip
|
|||
|
717 .LVL72:
|
|||
|
295:Core/Src/printf.c **** value /= base;
|
|||
|
718 .loc 1 295 7 is_stmt 1 view .LVU192
|
|||
|
295:Core/Src/printf.c **** value /= base;
|
|||
|
719 .loc 1 295 18 is_stmt 0 view .LVU193
|
|||
|
720 005a BCF1090F cmp ip, #9
|
|||
|
721 005e DFD9 bls .L59
|
|||
|
295:Core/Src/printf.c **** value /= base;
|
|||
|
722 .loc 1 295 85 discriminator 2 view .LVU194
|
|||
|
723 0060 16F0200F tst r6, #32
|
|||
|
724 0064 08D0 beq .L56
|
|||
|
295:Core/Src/printf.c **** value /= base;
|
|||
|
725 .loc 1 295 85 view .LVU195
|
|||
|
726 0066 4127 movs r7, #65
|
|||
|
727 .L53:
|
|||
|
295:Core/Src/printf.c **** value /= base;
|
|||
|
728 .loc 1 295 85 discriminator 7 view .LVU196
|
|||
|
729 0068 BC44 add ip, ip, r7
|
|||
|
730 .LVL73:
|
|||
|
295:Core/Src/printf.c **** value /= base;
|
|||
|
731 .loc 1 295 85 discriminator 7 view .LVU197
|
|||
|
732 006a 5FFA8CFC uxtb ip, ip
|
|||
|
295:Core/Src/printf.c **** value /= base;
|
|||
|
733 .loc 1 295 18 discriminator 7 view .LVU198
|
|||
|
734 006e ACF10A0C sub ip, ip, #10
|
|||
|
735 0072 5FFA8CFC uxtb ip, ip
|
|||
|
736 0076 D7E7 b .L52
|
|||
|
737 .LVL74:
|
|||
|
738 .L56:
|
|||
|
295:Core/Src/printf.c **** value /= base;
|
|||
|
739 .loc 1 295 85 view .LVU199
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 20
|
|||
|
|
|||
|
|
|||
|
740 0078 6127 movs r7, #97
|
|||
|
741 007a F5E7 b .L53
|
|||
|
742 .LVL75:
|
|||
|
743 .L55:
|
|||
|
295:Core/Src/printf.c **** value /= base;
|
|||
|
744 .loc 1 295 85 view .LVU200
|
|||
|
745 .LBE26:
|
|||
|
284:Core/Src/printf.c ****
|
|||
|
746 .loc 1 284 10 view .LVU201
|
|||
|
747 007c 2746 mov r7, r4
|
|||
|
748 .LVL76:
|
|||
|
749 .L50:
|
|||
|
298:Core/Src/printf.c **** }
|
|||
|
299:Core/Src/printf.c ****
|
|||
|
300:Core/Src/printf.c **** return _ntoa_format(out, buffer, idx, maxlen, buf, len, negative, (unsigned int)base, prec, width
|
|||
|
750 .loc 1 300 3 is_stmt 1 view .LVU202
|
|||
|
751 .loc 1 300 10 is_stmt 0 view .LVU203
|
|||
|
752 007e 0696 str r6, [sp, #24]
|
|||
|
753 0080 1A9C ldr r4, [sp, #104]
|
|||
|
754 0082 0594 str r4, [sp, #20]
|
|||
|
755 0084 199C ldr r4, [sp, #100]
|
|||
|
756 0086 0494 str r4, [sp, #16]
|
|||
|
757 0088 0395 str r5, [sp, #12]
|
|||
|
758 008a 9DF85C40 ldrb r4, [sp, #92] @ zero_extendqisi2
|
|||
|
759 008e 0294 str r4, [sp, #8]
|
|||
|
760 0090 0197 str r7, [sp, #4]
|
|||
|
761 0092 08AC add r4, sp, #32
|
|||
|
762 0094 0094 str r4, [sp]
|
|||
|
763 0096 FFF7FEFF bl _ntoa_format
|
|||
|
764 .LVL77:
|
|||
|
301:Core/Src/printf.c **** }
|
|||
|
765 .loc 1 301 1 view .LVU204
|
|||
|
766 009a 10B0 add sp, sp, #64
|
|||
|
767 .LCFI12:
|
|||
|
768 .cfi_def_cfa_offset 24
|
|||
|
769 @ sp needed
|
|||
|
770 009c BDE8F081 pop {r4, r5, r6, r7, r8, pc}
|
|||
|
771 .loc 1 301 1 view .LVU205
|
|||
|
772 .cfi_endproc
|
|||
|
773 .LFE9:
|
|||
|
775 .global __aeabi_uldivmod
|
|||
|
776 .section .text._ntoa_long_long,"ax",%progbits
|
|||
|
777 .align 1
|
|||
|
778 .syntax unified
|
|||
|
779 .thumb
|
|||
|
780 .thumb_func
|
|||
|
781 .fpu fpv5-d16
|
|||
|
783 _ntoa_long_long:
|
|||
|
784 .LVL78:
|
|||
|
785 .LFB10:
|
|||
|
302:Core/Src/printf.c ****
|
|||
|
303:Core/Src/printf.c ****
|
|||
|
304:Core/Src/printf.c **** // internal itoa for 'long long' type
|
|||
|
305:Core/Src/printf.c **** #if defined(PRINTF_SUPPORT_LONG_LONG)
|
|||
|
306:Core/Src/printf.c **** static size_t _ntoa_long_long(out_fct_type out, char* buffer, size_t idx, size_t maxlen, unsigned l
|
|||
|
307:Core/Src/printf.c **** {
|
|||
|
786 .loc 1 307 1 is_stmt 1 view -0
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 21
|
|||
|
|
|||
|
|
|||
|
787 .cfi_startproc
|
|||
|
788 @ args = 36, pretend = 0, frame = 48
|
|||
|
789 @ frame_needed = 0, uses_anonymous_args = 0
|
|||
|
790 .loc 1 307 1 is_stmt 0 view .LVU207
|
|||
|
791 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|||
|
792 .LCFI13:
|
|||
|
793 .cfi_def_cfa_offset 36
|
|||
|
794 .cfi_offset 4, -36
|
|||
|
795 .cfi_offset 5, -32
|
|||
|
796 .cfi_offset 6, -28
|
|||
|
797 .cfi_offset 7, -24
|
|||
|
798 .cfi_offset 8, -20
|
|||
|
799 .cfi_offset 9, -16
|
|||
|
800 .cfi_offset 10, -12
|
|||
|
801 .cfi_offset 11, -8
|
|||
|
802 .cfi_offset 14, -4
|
|||
|
803 0004 95B0 sub sp, sp, #84
|
|||
|
804 .LCFI14:
|
|||
|
805 .cfi_def_cfa_offset 120
|
|||
|
806 0006 0990 str r0, [sp, #36]
|
|||
|
807 0008 0A91 str r1, [sp, #40]
|
|||
|
808 000a 0B92 str r2, [sp, #44]
|
|||
|
809 000c 9B46 mov fp, r3
|
|||
|
810 000e 1E9D ldr r5, [sp, #120]
|
|||
|
811 0010 1F9E ldr r6, [sp, #124]
|
|||
|
812 0012 229F ldr r7, [sp, #136]
|
|||
|
813 0014 DDF88C80 ldr r8, [sp, #140]
|
|||
|
814 0018 DDF898A0 ldr r10, [sp, #152]
|
|||
|
308:Core/Src/printf.c **** char buf[PRINTF_NTOA_BUFFER_SIZE];
|
|||
|
815 .loc 1 308 3 is_stmt 1 view .LVU208
|
|||
|
309:Core/Src/printf.c **** size_t len = 0U;
|
|||
|
816 .loc 1 309 3 view .LVU209
|
|||
|
817 .LVL79:
|
|||
|
310:Core/Src/printf.c ****
|
|||
|
311:Core/Src/printf.c **** // no hash for 0 values
|
|||
|
312:Core/Src/printf.c **** if (!value) {
|
|||
|
818 .loc 1 312 3 view .LVU210
|
|||
|
819 .loc 1 312 6 is_stmt 0 view .LVU211
|
|||
|
820 001c 55EA0603 orrs r3, r5, r6
|
|||
|
821 .LVL80:
|
|||
|
822 .loc 1 312 6 view .LVU212
|
|||
|
823 0020 01D1 bne .L61
|
|||
|
313:Core/Src/printf.c **** flags &= ~FLAGS_HASH;
|
|||
|
824 .loc 1 313 5 is_stmt 1 view .LVU213
|
|||
|
825 .loc 1 313 11 is_stmt 0 view .LVU214
|
|||
|
826 0022 2AF0100A bic r10, r10, #16
|
|||
|
827 .LVL81:
|
|||
|
828 .L61:
|
|||
|
314:Core/Src/printf.c **** }
|
|||
|
315:Core/Src/printf.c ****
|
|||
|
316:Core/Src/printf.c **** // write if precision != 0 and value is != 0
|
|||
|
317:Core/Src/printf.c **** if (!(flags & FLAGS_PRECISION) || value) {
|
|||
|
829 .loc 1 317 3 is_stmt 1 view .LVU215
|
|||
|
830 .loc 1 317 6 is_stmt 0 view .LVU216
|
|||
|
831 0026 1AF48064 ands r4, r10, #1024
|
|||
|
832 002a 23D0 beq .L67
|
|||
|
833 .loc 1 317 34 discriminator 1 view .LVU217
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 22
|
|||
|
|
|||
|
|
|||
|
834 002c 55EA0603 orrs r3, r5, r6
|
|||
|
835 0030 34D0 beq .L68
|
|||
|
836 0032 0024 movs r4, #0
|
|||
|
837 0034 1EE0 b .L67
|
|||
|
838 .LVL82:
|
|||
|
839 .L73:
|
|||
|
840 .LBB27:
|
|||
|
318:Core/Src/printf.c **** do {
|
|||
|
319:Core/Src/printf.c **** const char digit = (char)(value % base);
|
|||
|
320:Core/Src/printf.c **** buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10;
|
|||
|
841 .loc 1 320 18 discriminator 1 view .LVU218
|
|||
|
842 0036 03F13002 add r2, r3, #48
|
|||
|
843 003a D2B2 uxtb r2, r2
|
|||
|
844 .L65:
|
|||
|
845 .loc 1 320 14 discriminator 8 view .LVU219
|
|||
|
846 003c 04F10109 add r9, r4, #1
|
|||
|
847 .LVL83:
|
|||
|
848 .loc 1 320 18 discriminator 8 view .LVU220
|
|||
|
849 0040 14AB add r3, sp, #80
|
|||
|
850 .LVL84:
|
|||
|
851 .loc 1 320 18 discriminator 8 view .LVU221
|
|||
|
852 0042 1C44 add r4, r4, r3
|
|||
|
853 0044 04F8202C strb r2, [r4, #-32]
|
|||
|
321:Core/Src/printf.c **** value /= base;
|
|||
|
854 .loc 1 321 7 is_stmt 1 discriminator 8 view .LVU222
|
|||
|
855 .loc 1 321 13 is_stmt 0 discriminator 8 view .LVU223
|
|||
|
856 0048 3A46 mov r2, r7
|
|||
|
857 004a 4346 mov r3, r8
|
|||
|
858 004c 2846 mov r0, r5
|
|||
|
859 004e 3146 mov r1, r6
|
|||
|
860 0050 FFF7FEFF bl __aeabi_uldivmod
|
|||
|
861 .LVL85:
|
|||
|
862 .loc 1 321 13 discriminator 8 view .LVU224
|
|||
|
863 .LBE27:
|
|||
|
322:Core/Src/printf.c **** } while (value && (len < PRINTF_NTOA_BUFFER_SIZE));
|
|||
|
864 .loc 1 322 13 is_stmt 1 discriminator 8 view .LVU225
|
|||
|
865 .loc 1 322 14 is_stmt 0 discriminator 8 view .LVU226
|
|||
|
866 0054 BD42 cmp r5, r7
|
|||
|
867 0056 76EB0803 sbcs r3, r6, r8
|
|||
|
868 005a 2CBF ite cs
|
|||
|
869 005c 0123 movcs r3, #1
|
|||
|
870 005e 0023 movcc r3, #0
|
|||
|
871 .loc 1 322 20 discriminator 8 view .LVU227
|
|||
|
872 0060 B9F11F0F cmp r9, #31
|
|||
|
873 0064 8CBF ite hi
|
|||
|
874 0066 0023 movhi r3, #0
|
|||
|
875 0068 03F00103 andls r3, r3, #1
|
|||
|
876 .loc 1 322 5 discriminator 8 view .LVU228
|
|||
|
877 006c C3B1 cbz r3, .L63
|
|||
|
878 .LBB28:
|
|||
|
320:Core/Src/printf.c **** value /= base;
|
|||
|
879 .loc 1 320 14 view .LVU229
|
|||
|
880 006e 4C46 mov r4, r9
|
|||
|
321:Core/Src/printf.c **** value /= base;
|
|||
|
881 .loc 1 321 13 view .LVU230
|
|||
|
882 0070 0546 mov r5, r0
|
|||
|
883 0072 0E46 mov r6, r1
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 23
|
|||
|
|
|||
|
|
|||
|
884 .LVL86:
|
|||
|
885 .L67:
|
|||
|
321:Core/Src/printf.c **** value /= base;
|
|||
|
886 .loc 1 321 13 view .LVU231
|
|||
|
887 .LBE28:
|
|||
|
318:Core/Src/printf.c **** const char digit = (char)(value % base);
|
|||
|
888 .loc 1 318 5 is_stmt 1 view .LVU232
|
|||
|
889 .LBB29:
|
|||
|
319:Core/Src/printf.c **** buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10;
|
|||
|
890 .loc 1 319 7 view .LVU233
|
|||
|
319:Core/Src/printf.c **** buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10;
|
|||
|
891 .loc 1 319 39 is_stmt 0 view .LVU234
|
|||
|
892 0074 3A46 mov r2, r7
|
|||
|
893 0076 4346 mov r3, r8
|
|||
|
894 0078 2846 mov r0, r5
|
|||
|
895 007a 3146 mov r1, r6
|
|||
|
896 007c FFF7FEFF bl __aeabi_uldivmod
|
|||
|
897 .LVL87:
|
|||
|
319:Core/Src/printf.c **** buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10;
|
|||
|
898 .loc 1 319 18 view .LVU235
|
|||
|
899 0080 D3B2 uxtb r3, r2
|
|||
|
900 .LVL88:
|
|||
|
320:Core/Src/printf.c **** value /= base;
|
|||
|
901 .loc 1 320 7 is_stmt 1 view .LVU236
|
|||
|
320:Core/Src/printf.c **** value /= base;
|
|||
|
902 .loc 1 320 18 is_stmt 0 view .LVU237
|
|||
|
903 0082 092B cmp r3, #9
|
|||
|
904 0084 D7D9 bls .L73
|
|||
|
320:Core/Src/printf.c **** value /= base;
|
|||
|
905 .loc 1 320 85 discriminator 2 view .LVU238
|
|||
|
906 0086 1AF0200F tst r10, #32
|
|||
|
907 008a 05D0 beq .L69
|
|||
|
320:Core/Src/printf.c **** value /= base;
|
|||
|
908 .loc 1 320 85 view .LVU239
|
|||
|
909 008c 4122 movs r2, #65
|
|||
|
910 .L66:
|
|||
|
320:Core/Src/printf.c **** value /= base;
|
|||
|
911 .loc 1 320 85 discriminator 7 view .LVU240
|
|||
|
912 008e 1A44 add r2, r2, r3
|
|||
|
913 0090 D2B2 uxtb r2, r2
|
|||
|
320:Core/Src/printf.c **** value /= base;
|
|||
|
914 .loc 1 320 18 discriminator 7 view .LVU241
|
|||
|
915 0092 0A3A subs r2, r2, #10
|
|||
|
916 0094 D2B2 uxtb r2, r2
|
|||
|
917 0096 D1E7 b .L65
|
|||
|
918 .L69:
|
|||
|
320:Core/Src/printf.c **** value /= base;
|
|||
|
919 .loc 1 320 85 view .LVU242
|
|||
|
920 0098 6122 movs r2, #97
|
|||
|
921 009a F8E7 b .L66
|
|||
|
922 .LVL89:
|
|||
|
923 .L68:
|
|||
|
320:Core/Src/printf.c **** value /= base;
|
|||
|
924 .loc 1 320 85 view .LVU243
|
|||
|
925 .LBE29:
|
|||
|
309:Core/Src/printf.c ****
|
|||
|
926 .loc 1 309 10 view .LVU244
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 24
|
|||
|
|
|||
|
|
|||
|
927 009c 4FF00009 mov r9, #0
|
|||
|
928 .LVL90:
|
|||
|
929 .L63:
|
|||
|
323:Core/Src/printf.c **** }
|
|||
|
324:Core/Src/printf.c ****
|
|||
|
325:Core/Src/printf.c **** return _ntoa_format(out, buffer, idx, maxlen, buf, len, negative, (unsigned int)base, prec, width
|
|||
|
930 .loc 1 325 3 is_stmt 1 view .LVU245
|
|||
|
931 .loc 1 325 10 is_stmt 0 view .LVU246
|
|||
|
932 00a0 CDF818A0 str r10, [sp, #24]
|
|||
|
933 00a4 259B ldr r3, [sp, #148]
|
|||
|
934 00a6 0593 str r3, [sp, #20]
|
|||
|
935 00a8 249B ldr r3, [sp, #144]
|
|||
|
936 00aa 0493 str r3, [sp, #16]
|
|||
|
937 00ac 0397 str r7, [sp, #12]
|
|||
|
938 00ae 9DF88030 ldrb r3, [sp, #128] @ zero_extendqisi2
|
|||
|
939 00b2 0293 str r3, [sp, #8]
|
|||
|
940 00b4 CDF80490 str r9, [sp, #4]
|
|||
|
941 00b8 0CAB add r3, sp, #48
|
|||
|
942 00ba 0093 str r3, [sp]
|
|||
|
943 00bc 5B46 mov r3, fp
|
|||
|
944 00be 0B9A ldr r2, [sp, #44]
|
|||
|
945 00c0 0A99 ldr r1, [sp, #40]
|
|||
|
946 00c2 0998 ldr r0, [sp, #36]
|
|||
|
947 00c4 FFF7FEFF bl _ntoa_format
|
|||
|
948 .LVL91:
|
|||
|
326:Core/Src/printf.c **** }
|
|||
|
949 .loc 1 326 1 view .LVU247
|
|||
|
950 00c8 15B0 add sp, sp, #84
|
|||
|
951 .LCFI15:
|
|||
|
952 .cfi_def_cfa_offset 36
|
|||
|
953 @ sp needed
|
|||
|
954 00ca BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|||
|
955 .loc 1 326 1 view .LVU248
|
|||
|
956 .cfi_endproc
|
|||
|
957 .LFE10:
|
|||
|
959 .section .text._etoa,"ax",%progbits
|
|||
|
960 .align 1
|
|||
|
961 .syntax unified
|
|||
|
962 .thumb
|
|||
|
963 .thumb_func
|
|||
|
964 .fpu fpv5-d16
|
|||
|
966 _etoa:
|
|||
|
967 .LVL92:
|
|||
|
968 .LFB12:
|
|||
|
327:Core/Src/printf.c **** #endif // PRINTF_SUPPORT_LONG_LONG
|
|||
|
328:Core/Src/printf.c ****
|
|||
|
329:Core/Src/printf.c ****
|
|||
|
330:Core/Src/printf.c **** #if defined(PRINTF_SUPPORT_FLOAT)
|
|||
|
331:Core/Src/printf.c ****
|
|||
|
332:Core/Src/printf.c **** #if defined(PRINTF_SUPPORT_EXPONENTIAL)
|
|||
|
333:Core/Src/printf.c **** // forward declaration so that _ftoa can switch to exp notation for values > PRINTF_MAX_FLOAT
|
|||
|
334:Core/Src/printf.c **** static size_t _etoa(out_fct_type out, char* buffer, size_t idx, size_t maxlen, double value, unsign
|
|||
|
335:Core/Src/printf.c **** #endif
|
|||
|
336:Core/Src/printf.c ****
|
|||
|
337:Core/Src/printf.c ****
|
|||
|
338:Core/Src/printf.c **** // internal ftoa for fixed decimal floating point
|
|||
|
339:Core/Src/printf.c **** static size_t _ftoa(out_fct_type out, char* buffer, size_t idx, size_t maxlen, double value, unsign
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 25
|
|||
|
|
|||
|
|
|||
|
340:Core/Src/printf.c **** {
|
|||
|
341:Core/Src/printf.c **** char buf[PRINTF_FTOA_BUFFER_SIZE];
|
|||
|
342:Core/Src/printf.c **** size_t len = 0U;
|
|||
|
343:Core/Src/printf.c **** double diff = 0.0;
|
|||
|
344:Core/Src/printf.c ****
|
|||
|
345:Core/Src/printf.c **** // powers of 10
|
|||
|
346:Core/Src/printf.c **** static const double pow10[] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 10
|
|||
|
347:Core/Src/printf.c ****
|
|||
|
348:Core/Src/printf.c **** // test for special values
|
|||
|
349:Core/Src/printf.c **** if (value != value)
|
|||
|
350:Core/Src/printf.c **** return _out_rev(out, buffer, idx, maxlen, "nan", 3, width, flags);
|
|||
|
351:Core/Src/printf.c **** if (value < -DBL_MAX)
|
|||
|
352:Core/Src/printf.c **** return _out_rev(out, buffer, idx, maxlen, "fni-", 4, width, flags);
|
|||
|
353:Core/Src/printf.c **** if (value > DBL_MAX)
|
|||
|
354:Core/Src/printf.c **** return _out_rev(out, buffer, idx, maxlen, (flags & FLAGS_PLUS) ? "fni+" : "fni", (flags & FLAGS
|
|||
|
355:Core/Src/printf.c ****
|
|||
|
356:Core/Src/printf.c **** // test for very large values
|
|||
|
357:Core/Src/printf.c **** // standard printf behavior is to print EVERY whole number digit -- which could be 100s of charac
|
|||
|
358:Core/Src/printf.c **** if ((value > PRINTF_MAX_FLOAT) || (value < -PRINTF_MAX_FLOAT)) {
|
|||
|
359:Core/Src/printf.c **** #if defined(PRINTF_SUPPORT_EXPONENTIAL)
|
|||
|
360:Core/Src/printf.c **** return _etoa(out, buffer, idx, maxlen, value, prec, width, flags);
|
|||
|
361:Core/Src/printf.c **** #else
|
|||
|
362:Core/Src/printf.c **** return 0U;
|
|||
|
363:Core/Src/printf.c **** #endif
|
|||
|
364:Core/Src/printf.c **** }
|
|||
|
365:Core/Src/printf.c ****
|
|||
|
366:Core/Src/printf.c **** // test for negative
|
|||
|
367:Core/Src/printf.c **** bool negative = false;
|
|||
|
368:Core/Src/printf.c **** if (value < 0) {
|
|||
|
369:Core/Src/printf.c **** negative = true;
|
|||
|
370:Core/Src/printf.c **** value = 0 - value;
|
|||
|
371:Core/Src/printf.c **** }
|
|||
|
372:Core/Src/printf.c ****
|
|||
|
373:Core/Src/printf.c **** // set default precision, if not set explicitly
|
|||
|
374:Core/Src/printf.c **** if (!(flags & FLAGS_PRECISION)) {
|
|||
|
375:Core/Src/printf.c **** prec = PRINTF_DEFAULT_FLOAT_PRECISION;
|
|||
|
376:Core/Src/printf.c **** }
|
|||
|
377:Core/Src/printf.c **** // limit precision to 9, cause a prec >= 10 can lead to overflow errors
|
|||
|
378:Core/Src/printf.c **** while ((len < PRINTF_FTOA_BUFFER_SIZE) && (prec > 9U)) {
|
|||
|
379:Core/Src/printf.c **** buf[len++] = '0';
|
|||
|
380:Core/Src/printf.c **** prec--;
|
|||
|
381:Core/Src/printf.c **** }
|
|||
|
382:Core/Src/printf.c ****
|
|||
|
383:Core/Src/printf.c **** int whole = (int)value;
|
|||
|
384:Core/Src/printf.c **** double tmp = (value - whole) * pow10[prec];
|
|||
|
385:Core/Src/printf.c **** unsigned long frac = (unsigned long)tmp;
|
|||
|
386:Core/Src/printf.c **** diff = tmp - frac;
|
|||
|
387:Core/Src/printf.c ****
|
|||
|
388:Core/Src/printf.c **** if (diff > 0.5) {
|
|||
|
389:Core/Src/printf.c **** ++frac;
|
|||
|
390:Core/Src/printf.c **** // handle rollover, e.g. case 0.99 with prec 1 is 1.0
|
|||
|
391:Core/Src/printf.c **** if (frac >= pow10[prec]) {
|
|||
|
392:Core/Src/printf.c **** frac = 0;
|
|||
|
393:Core/Src/printf.c **** ++whole;
|
|||
|
394:Core/Src/printf.c **** }
|
|||
|
395:Core/Src/printf.c **** }
|
|||
|
396:Core/Src/printf.c **** else if (diff < 0.5) {
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 26
|
|||
|
|
|||
|
|
|||
|
397:Core/Src/printf.c **** }
|
|||
|
398:Core/Src/printf.c **** else if ((frac == 0U) || (frac & 1U)) {
|
|||
|
399:Core/Src/printf.c **** // if halfway, round up if odd OR if last digit is 0
|
|||
|
400:Core/Src/printf.c **** ++frac;
|
|||
|
401:Core/Src/printf.c **** }
|
|||
|
402:Core/Src/printf.c ****
|
|||
|
403:Core/Src/printf.c **** if (prec == 0U) {
|
|||
|
404:Core/Src/printf.c **** diff = value - (double)whole;
|
|||
|
405:Core/Src/printf.c **** if ((!(diff < 0.5) || (diff > 0.5)) && (whole & 1)) {
|
|||
|
406:Core/Src/printf.c **** // exactly 0.5 and ODD, then round up
|
|||
|
407:Core/Src/printf.c **** // 1.5 -> 2, but 2.5 -> 2
|
|||
|
408:Core/Src/printf.c **** ++whole;
|
|||
|
409:Core/Src/printf.c **** }
|
|||
|
410:Core/Src/printf.c **** }
|
|||
|
411:Core/Src/printf.c **** else {
|
|||
|
412:Core/Src/printf.c **** unsigned int count = prec;
|
|||
|
413:Core/Src/printf.c **** // now do fractional part, as an unsigned number
|
|||
|
414:Core/Src/printf.c **** while (len < PRINTF_FTOA_BUFFER_SIZE) {
|
|||
|
415:Core/Src/printf.c **** --count;
|
|||
|
416:Core/Src/printf.c **** buf[len++] = (char)(48U + (frac % 10U));
|
|||
|
417:Core/Src/printf.c **** if (!(frac /= 10U)) {
|
|||
|
418:Core/Src/printf.c **** break;
|
|||
|
419:Core/Src/printf.c **** }
|
|||
|
420:Core/Src/printf.c **** }
|
|||
|
421:Core/Src/printf.c **** // add extra 0s
|
|||
|
422:Core/Src/printf.c **** while ((len < PRINTF_FTOA_BUFFER_SIZE) && (count-- > 0U)) {
|
|||
|
423:Core/Src/printf.c **** buf[len++] = '0';
|
|||
|
424:Core/Src/printf.c **** }
|
|||
|
425:Core/Src/printf.c **** if (len < PRINTF_FTOA_BUFFER_SIZE) {
|
|||
|
426:Core/Src/printf.c **** // add decimal
|
|||
|
427:Core/Src/printf.c **** buf[len++] = '.';
|
|||
|
428:Core/Src/printf.c **** }
|
|||
|
429:Core/Src/printf.c **** }
|
|||
|
430:Core/Src/printf.c ****
|
|||
|
431:Core/Src/printf.c **** // do whole part, number is reversed
|
|||
|
432:Core/Src/printf.c **** while (len < PRINTF_FTOA_BUFFER_SIZE) {
|
|||
|
433:Core/Src/printf.c **** buf[len++] = (char)(48 + (whole % 10));
|
|||
|
434:Core/Src/printf.c **** if (!(whole /= 10)) {
|
|||
|
435:Core/Src/printf.c **** break;
|
|||
|
436:Core/Src/printf.c **** }
|
|||
|
437:Core/Src/printf.c **** }
|
|||
|
438:Core/Src/printf.c ****
|
|||
|
439:Core/Src/printf.c **** // pad leading zeros
|
|||
|
440:Core/Src/printf.c **** if (!(flags & FLAGS_LEFT) && (flags & FLAGS_ZEROPAD)) {
|
|||
|
441:Core/Src/printf.c **** if (width && (negative || (flags & (FLAGS_PLUS | FLAGS_SPACE)))) {
|
|||
|
442:Core/Src/printf.c **** width--;
|
|||
|
443:Core/Src/printf.c **** }
|
|||
|
444:Core/Src/printf.c **** while ((len < width) && (len < PRINTF_FTOA_BUFFER_SIZE)) {
|
|||
|
445:Core/Src/printf.c **** buf[len++] = '0';
|
|||
|
446:Core/Src/printf.c **** }
|
|||
|
447:Core/Src/printf.c **** }
|
|||
|
448:Core/Src/printf.c ****
|
|||
|
449:Core/Src/printf.c **** if (len < PRINTF_FTOA_BUFFER_SIZE) {
|
|||
|
450:Core/Src/printf.c **** if (negative) {
|
|||
|
451:Core/Src/printf.c **** buf[len++] = '-';
|
|||
|
452:Core/Src/printf.c **** }
|
|||
|
453:Core/Src/printf.c **** else if (flags & FLAGS_PLUS) {
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 27
|
|||
|
|
|||
|
|
|||
|
454:Core/Src/printf.c **** buf[len++] = '+'; // ignore the space if the '+' exists
|
|||
|
455:Core/Src/printf.c **** }
|
|||
|
456:Core/Src/printf.c **** else if (flags & FLAGS_SPACE) {
|
|||
|
457:Core/Src/printf.c **** buf[len++] = ' ';
|
|||
|
458:Core/Src/printf.c **** }
|
|||
|
459:Core/Src/printf.c **** }
|
|||
|
460:Core/Src/printf.c ****
|
|||
|
461:Core/Src/printf.c **** return _out_rev(out, buffer, idx, maxlen, buf, len, width, flags);
|
|||
|
462:Core/Src/printf.c **** }
|
|||
|
463:Core/Src/printf.c ****
|
|||
|
464:Core/Src/printf.c ****
|
|||
|
465:Core/Src/printf.c **** #if defined(PRINTF_SUPPORT_EXPONENTIAL)
|
|||
|
466:Core/Src/printf.c **** // internal ftoa variant for exponential floating-point type, contributed by Martijn Jasperse <m.ja
|
|||
|
467:Core/Src/printf.c **** static size_t _etoa(out_fct_type out, char* buffer, size_t idx, size_t maxlen, double value, unsign
|
|||
|
468:Core/Src/printf.c **** {
|
|||
|
969 .loc 1 468 1 is_stmt 1 view -0
|
|||
|
970 .cfi_startproc
|
|||
|
971 @ args = 12, pretend = 0, frame = 8
|
|||
|
972 @ frame_needed = 0, uses_anonymous_args = 0
|
|||
|
973 .loc 1 468 1 is_stmt 0 view .LVU250
|
|||
|
974 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|||
|
975 .LCFI16:
|
|||
|
976 .cfi_def_cfa_offset 36
|
|||
|
977 .cfi_offset 4, -36
|
|||
|
978 .cfi_offset 5, -32
|
|||
|
979 .cfi_offset 6, -28
|
|||
|
980 .cfi_offset 7, -24
|
|||
|
981 .cfi_offset 8, -20
|
|||
|
982 .cfi_offset 9, -16
|
|||
|
983 .cfi_offset 10, -12
|
|||
|
984 .cfi_offset 11, -8
|
|||
|
985 .cfi_offset 14, -4
|
|||
|
986 0004 89B0 sub sp, sp, #36
|
|||
|
987 .LCFI17:
|
|||
|
988 .cfi_def_cfa_offset 72
|
|||
|
989 0006 0446 mov r4, r0
|
|||
|
990 0008 0D46 mov r5, r1
|
|||
|
991 000a 1746 mov r7, r2
|
|||
|
992 000c 1E46 mov r6, r3
|
|||
|
993 000e 1299 ldr r1, [sp, #72]
|
|||
|
994 .LVL93:
|
|||
|
995 .loc 1 468 1 view .LVU251
|
|||
|
996 0010 DDF84CA0 ldr r10, [sp, #76]
|
|||
|
997 0014 DDF85090 ldr r9, [sp, #80]
|
|||
|
469:Core/Src/printf.c **** // check for NaN and special values
|
|||
|
470:Core/Src/printf.c **** if ((value != value) || (value > DBL_MAX) || (value < -DBL_MAX)) {
|
|||
|
998 .loc 1 470 3 is_stmt 1 view .LVU252
|
|||
|
999 .loc 1 470 6 is_stmt 0 view .LVU253
|
|||
|
1000 0018 B4EE400B vcmp.f64 d0, d0
|
|||
|
1001 001c F1EE10FA vmrs APSR_nzcv, FPSCR
|
|||
|
1002 0020 40F0AC80 bne .L75
|
|||
|
1003 .loc 1 470 24 discriminator 1 view .LVU254
|
|||
|
1004 0024 9FED967B vldr.64 d7, .L116
|
|||
|
1005 0028 B4EEC70B vcmpe.f64 d0, d7
|
|||
|
1006 002c F1EE10FA vmrs APSR_nzcv, FPSCR
|
|||
|
1007 0030 00F3A480 bgt .L75
|
|||
|
1008 .loc 1 470 45 discriminator 2 view .LVU255
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 28
|
|||
|
|
|||
|
|
|||
|
1009 0034 9FED947B vldr.64 d7, .L116+8
|
|||
|
1010 0038 B4EEC70B vcmpe.f64 d0, d7
|
|||
|
1011 003c F1EE10FA vmrs APSR_nzcv, FPSCR
|
|||
|
1012 0040 00F19C80 bmi .L75
|
|||
|
471:Core/Src/printf.c **** return _ftoa(out, buffer, idx, maxlen, value, prec, width, flags);
|
|||
|
472:Core/Src/printf.c **** }
|
|||
|
473:Core/Src/printf.c ****
|
|||
|
474:Core/Src/printf.c **** // determine the sign
|
|||
|
475:Core/Src/printf.c **** const bool negative = value < 0;
|
|||
|
1013 .loc 1 475 3 is_stmt 1 view .LVU256
|
|||
|
1014 .LVL94:
|
|||
|
476:Core/Src/printf.c **** if (negative) {
|
|||
|
1015 .loc 1 476 3 view .LVU257
|
|||
|
1016 .loc 1 476 6 is_stmt 0 view .LVU258
|
|||
|
1017 0044 B5EEC00B vcmpe.f64 d0, #0
|
|||
|
1018 0048 F1EE10FA vmrs APSR_nzcv, FPSCR
|
|||
|
1019 004c 00F1A480 bmi .L114
|
|||
|
1020 0050 B0EE405B vmov.f64 d5, d0
|
|||
|
1021 .LVL95:
|
|||
|
1022 .L79:
|
|||
|
477:Core/Src/printf.c **** value = -value;
|
|||
|
478:Core/Src/printf.c **** }
|
|||
|
479:Core/Src/printf.c ****
|
|||
|
480:Core/Src/printf.c **** // default precision
|
|||
|
481:Core/Src/printf.c **** if (!(flags & FLAGS_PRECISION)) {
|
|||
|
1023 .loc 1 481 3 is_stmt 1 view .LVU259
|
|||
|
1024 .loc 1 481 6 is_stmt 0 view .LVU260
|
|||
|
1025 0054 19F48060 ands r0, r9, #1024
|
|||
|
1026 .LVL96:
|
|||
|
1027 .loc 1 481 6 view .LVU261
|
|||
|
1028 0058 00D1 bne .L81
|
|||
|
482:Core/Src/printf.c **** prec = PRINTF_DEFAULT_FLOAT_PRECISION;
|
|||
|
1029 .loc 1 482 10 view .LVU262
|
|||
|
1030 005a 0621 movs r1, #6
|
|||
|
1031 .L81:
|
|||
|
1032 .LVL97:
|
|||
|
483:Core/Src/printf.c **** }
|
|||
|
484:Core/Src/printf.c ****
|
|||
|
485:Core/Src/printf.c **** // determine the decimal exponent
|
|||
|
486:Core/Src/printf.c **** // based on the algorithm by David Gay (https://www.ampl.com/netlib/fp/dtoa.c)
|
|||
|
487:Core/Src/printf.c **** union {
|
|||
|
1033 .loc 1 487 3 is_stmt 1 view .LVU263
|
|||
|
488:Core/Src/printf.c **** uint64_t U;
|
|||
|
489:Core/Src/printf.c **** double F;
|
|||
|
490:Core/Src/printf.c **** } conv;
|
|||
|
491:Core/Src/printf.c ****
|
|||
|
492:Core/Src/printf.c **** conv.F = value;
|
|||
|
1034 .loc 1 492 3 view .LVU264
|
|||
|
493:Core/Src/printf.c **** int exp2 = (int)((conv.U >> 52U) & 0x07FFU) - 1023; // effectively log2
|
|||
|
1035 .loc 1 493 3 view .LVU265
|
|||
|
1036 005c 15EE902A vmov r2, s11 @ int
|
|||
|
1037 .LVL98:
|
|||
|
1038 .loc 1 493 14 is_stmt 0 view .LVU266
|
|||
|
1039 0060 C2F30A53 ubfx r3, r2, #20, #11
|
|||
|
1040 .LVL99:
|
|||
|
1041 .loc 1 493 7 view .LVU267
|
|||
|
1042 0064 A3F2FF33 subw r3, r3, #1023
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 29
|
|||
|
|
|||
|
|
|||
|
1043 0068 07EE103A vmov s14, r3 @ int
|
|||
|
1044 .LVL100:
|
|||
|
494:Core/Src/printf.c **** conv.U = (conv.U & ((1ULL << 52U) - 1U)) | (1023ULL << 52U); // drop the exponent so conv.F is n
|
|||
|
1045 .loc 1 494 3 is_stmt 1 view .LVU268
|
|||
|
1046 .loc 1 494 20 is_stmt 0 view .LVU269
|
|||
|
1047 006c C2F3130E ubfx lr, r2, #0, #20
|
|||
|
1048 .loc 1 494 44 view .LVU270
|
|||
|
1049 0070 15EE102A vmov r2, s10 @ int
|
|||
|
1050 0074 4EF07F53 orr r3, lr, #1069547520
|
|||
|
1051 .LVL101:
|
|||
|
1052 .loc 1 494 44 view .LVU271
|
|||
|
1053 0078 43F44013 orr r3, r3, #3145728
|
|||
|
495:Core/Src/printf.c **** // now approximate log10 from the log2 integer part and an expansion of ln around 1.5
|
|||
|
496:Core/Src/printf.c **** int expval = (int)(0.1760912590558 + exp2 * 0.301029995663981 + (conv.F - 1.5) * 0.28952965460216
|
|||
|
1054 .loc 1 496 3 is_stmt 1 view .LVU272
|
|||
|
1055 .loc 1 496 45 is_stmt 0 view .LVU273
|
|||
|
1056 007c B8EEC77B vcvt.f64.s32 d7, s14
|
|||
|
1057 .LVL102:
|
|||
|
1058 .loc 1 496 38 view .LVU274
|
|||
|
1059 0080 9FED834B vldr.64 d4, .L116+16
|
|||
|
1060 0084 9FED846B vldr.64 d6, .L116+24
|
|||
|
1061 0088 07EE046B vmla.f64 d6, d7, d4
|
|||
|
1062 .loc 1 496 75 view .LVU275
|
|||
|
1063 008c B7EE087B vmov.f64 d7, #1.5e+0
|
|||
|
1064 0090 43EC142B vmov d4, r2, r3
|
|||
|
1065 0094 34EE477B vsub.f64 d7, d4, d7
|
|||
|
1066 .loc 1 496 65 view .LVU276
|
|||
|
1067 0098 9FED814B vldr.64 d4, .L116+32
|
|||
|
1068 009c 07EE046B vmla.f64 d6, d7, d4
|
|||
|
1069 .loc 1 496 7 view .LVU277
|
|||
|
1070 00a0 FDEEC67B vcvt.s32.f64 s15, d6
|
|||
|
1071 00a4 17EE908A vmov r8, s15 @ int
|
|||
|
1072 .LVL103:
|
|||
|
497:Core/Src/printf.c **** // now we want to compute 10^expval but we want to be sure it won't overflow
|
|||
|
498:Core/Src/printf.c **** exp2 = (int)(expval * 3.321928094887362 + 0.5);
|
|||
|
1073 .loc 1 498 3 is_stmt 1 view .LVU278
|
|||
|
1074 .loc 1 498 23 is_stmt 0 view .LVU279
|
|||
|
1075 00a8 B8EEE74B vcvt.f64.s32 d4, s15
|
|||
|
1076 .loc 1 498 43 view .LVU280
|
|||
|
1077 00ac 9FED7E6B vldr.64 d6, .L116+40
|
|||
|
1078 00b0 B6EE007B vmov.f64 d7, #5.0e-1
|
|||
|
1079 00b4 04EE067B vmla.f64 d7, d4, d6
|
|||
|
1080 .loc 1 498 8 view .LVU281
|
|||
|
1081 00b8 FDEEC76B vcvt.s32.f64 s13, d7
|
|||
|
1082 .LVL104:
|
|||
|
499:Core/Src/printf.c **** const double z = expval * 2.302585092994046 - exp2 * 0.6931471805599453;
|
|||
|
1083 .loc 1 499 3 is_stmt 1 view .LVU282
|
|||
|
1084 .loc 1 499 55 is_stmt 0 view .LVU283
|
|||
|
1085 00bc B8EEE67B vcvt.f64.s32 d7, s13
|
|||
|
1086 00c0 9FED7B3B vldr.64 d3, .L116+48
|
|||
|
1087 00c4 27EE037B vmul.f64 d7, d7, d3
|
|||
|
1088 .loc 1 499 16 view .LVU284
|
|||
|
1089 00c8 9FED7B3B vldr.64 d3, .L116+56
|
|||
|
1090 00cc 14EE037B vnmls.f64 d7, d4, d3
|
|||
|
1091 .LVL105:
|
|||
|
500:Core/Src/printf.c **** const double z2 = z * z;
|
|||
|
1092 .loc 1 500 3 is_stmt 1 view .LVU285
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 30
|
|||
|
|
|||
|
|
|||
|
1093 .loc 1 500 16 is_stmt 0 view .LVU286
|
|||
|
1094 00d0 27EE074B vmul.f64 d4, d7, d7
|
|||
|
1095 .LVL106:
|
|||
|
501:Core/Src/printf.c **** conv.U = (uint64_t)(exp2 + 1023) << 52U;
|
|||
|
1096 .loc 1 501 3 is_stmt 1 view .LVU287
|
|||
|
1097 .loc 1 501 28 is_stmt 0 view .LVU288
|
|||
|
1098 00d4 16EE903A vmov r3, s13 @ int
|
|||
|
1099 00d8 03F2FF33 addw r3, r3, #1023
|
|||
|
1100 .loc 1 501 36 view .LVU289
|
|||
|
1101 00dc 4FF0000B mov fp, #0
|
|||
|
1102 00e0 4FEA035C lsl ip, r3, #20
|
|||
|
502:Core/Src/printf.c **** // compute exp(z) using continued fractions, see https://en.wikipedia.org/wiki/Exponential_functi
|
|||
|
503:Core/Src/printf.c **** conv.F *= 1 + 2 * z / (2 - z + (z2 / (6 + (z2 / (10 + z2 / 14)))));
|
|||
|
1103 .loc 1 503 3 is_stmt 1 view .LVU290
|
|||
|
1104 .loc 1 503 19 is_stmt 0 view .LVU291
|
|||
|
1105 00e4 37EE073B vadd.f64 d3, d7, d7
|
|||
|
1106 .loc 1 503 28 view .LVU292
|
|||
|
1107 00e8 B0EE006B vmov.f64 d6, #2.0e+0
|
|||
|
1108 00ec 36EE477B vsub.f64 d7, d6, d7
|
|||
|
1109 .LVL107:
|
|||
|
1110 .loc 1 503 60 view .LVU293
|
|||
|
1111 00f0 B2EE0C6B vmov.f64 d6, #1.4e+1
|
|||
|
1112 00f4 84EE062B vdiv.f64 d2, d4, d6
|
|||
|
1113 .loc 1 503 55 view .LVU294
|
|||
|
1114 00f8 B2EE046B vmov.f64 d6, #1.0e+1
|
|||
|
1115 00fc 32EE062B vadd.f64 d2, d2, d6
|
|||
|
1116 .loc 1 503 49 view .LVU295
|
|||
|
1117 0100 84EE026B vdiv.f64 d6, d4, d2
|
|||
|
1118 .loc 1 503 43 view .LVU296
|
|||
|
1119 0104 B1EE082B vmov.f64 d2, #6.0e+0
|
|||
|
1120 0108 36EE026B vadd.f64 d6, d6, d2
|
|||
|
1121 .loc 1 503 38 view .LVU297
|
|||
|
1122 010c 84EE062B vdiv.f64 d2, d4, d6
|
|||
|
1123 .loc 1 503 32 view .LVU298
|
|||
|
1124 0110 37EE027B vadd.f64 d7, d7, d2
|
|||
|
1125 .loc 1 503 23 view .LVU299
|
|||
|
1126 0114 83EE076B vdiv.f64 d6, d3, d7
|
|||
|
1127 .loc 1 503 15 view .LVU300
|
|||
|
1128 0118 B7EE007B vmov.f64 d7, #1.0e+0
|
|||
|
1129 011c 36EE077B vadd.f64 d7, d6, d7
|
|||
|
1130 .loc 1 503 10 view .LVU301
|
|||
|
1131 0120 4CEC16BB vmov d6, fp, ip
|
|||
|
1132 0124 27EE067B vmul.f64 d7, d7, d6
|
|||
|
1133 0128 B0EE476B vmov.f64 d6, d7 @ int
|
|||
|
1134 .LVL108:
|
|||
|
504:Core/Src/printf.c **** // correct for rounding errors
|
|||
|
505:Core/Src/printf.c **** if (value < conv.F) {
|
|||
|
1135 .loc 1 505 3 is_stmt 1 view .LVU302
|
|||
|
1136 .loc 1 505 6 is_stmt 0 view .LVU303
|
|||
|
1137 012c B4EEC57B vcmpe.f64 d7, d5
|
|||
|
1138 0130 F1EE10FA vmrs APSR_nzcv, FPSCR
|
|||
|
1139 0134 05DD ble .L82
|
|||
|
506:Core/Src/printf.c **** expval--;
|
|||
|
1140 .loc 1 506 5 is_stmt 1 view .LVU304
|
|||
|
1141 .loc 1 506 11 is_stmt 0 view .LVU305
|
|||
|
1142 0136 08F1FF38 add r8, r8, #-1
|
|||
|
1143 .LVL109:
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 31
|
|||
|
|
|||
|
|
|||
|
507:Core/Src/printf.c **** conv.F /= 10;
|
|||
|
1144 .loc 1 507 5 is_stmt 1 view .LVU306
|
|||
|
1145 .loc 1 507 12 is_stmt 0 view .LVU307
|
|||
|
1146 013a B2EE044B vmov.f64 d4, #1.0e+1
|
|||
|
1147 .LVL110:
|
|||
|
1148 .loc 1 507 12 view .LVU308
|
|||
|
1149 013e 87EE046B vdiv.f64 d6, d7, d4
|
|||
|
1150 .L82:
|
|||
|
508:Core/Src/printf.c **** }
|
|||
|
509:Core/Src/printf.c ****
|
|||
|
510:Core/Src/printf.c **** // the exponent format is "%+03d" and largest value is "307", so set aside 4-5 characters
|
|||
|
511:Core/Src/printf.c **** unsigned int minwidth = ((expval < 100) && (expval > -100)) ? 4U : 5U;
|
|||
|
1151 .loc 1 511 3 is_stmt 1 view .LVU309
|
|||
|
1152 .loc 1 511 43 is_stmt 0 view .LVU310
|
|||
|
1153 0142 08F16303 add r3, r8, #99
|
|||
|
1154 .loc 1 511 68 view .LVU311
|
|||
|
1155 0146 C62B cmp r3, #198
|
|||
|
1156 0148 29D8 bhi .L100
|
|||
|
1157 .loc 1 511 68 view .LVU312
|
|||
|
1158 014a 4FF0040B mov fp, #4
|
|||
|
1159 .L84:
|
|||
|
1160 .LVL111:
|
|||
|
512:Core/Src/printf.c ****
|
|||
|
513:Core/Src/printf.c **** // in "%g" mode, "prec" is the number of *significant figures* not decimals
|
|||
|
514:Core/Src/printf.c **** if (flags & FLAGS_ADAPT_EXP) {
|
|||
|
1161 .loc 1 514 3 is_stmt 1 discriminator 4 view .LVU313
|
|||
|
1162 .loc 1 514 6 is_stmt 0 discriminator 4 view .LVU314
|
|||
|
1163 014e 19F4006F tst r9, #2048
|
|||
|
1164 0152 2DD0 beq .L85
|
|||
|
515:Core/Src/printf.c **** // do we want to fall-back to "%f" mode?
|
|||
|
516:Core/Src/printf.c **** if ((value >= 1e-4) && (value < 1e6)) {
|
|||
|
1165 .loc 1 516 5 is_stmt 1 view .LVU315
|
|||
|
1166 .loc 1 516 8 is_stmt 0 view .LVU316
|
|||
|
1167 0154 9FED5A7B vldr.64 d7, .L116+64
|
|||
|
1168 0158 B4EEC75B vcmpe.f64 d5, d7
|
|||
|
1169 015c F1EE10FA vmrs APSR_nzcv, FPSCR
|
|||
|
1170 0160 2BDB blt .L86
|
|||
|
1171 .loc 1 516 25 discriminator 1 view .LVU317
|
|||
|
1172 0162 9FED597B vldr.64 d7, .L116+72
|
|||
|
1173 0166 B4EEC75B vcmpe.f64 d5, d7
|
|||
|
1174 016a F1EE10FA vmrs APSR_nzcv, FPSCR
|
|||
|
1175 016e 24D5 bpl .L86
|
|||
|
517:Core/Src/printf.c **** if ((int)prec > expval) {
|
|||
|
1176 .loc 1 517 7 is_stmt 1 view .LVU318
|
|||
|
1177 .loc 1 517 10 is_stmt 0 view .LVU319
|
|||
|
1178 0170 4145 cmp r1, r8
|
|||
|
1179 0172 17DD ble .L101
|
|||
|
518:Core/Src/printf.c **** prec = (unsigned)((int)prec - expval - 1);
|
|||
|
1180 .loc 1 518 9 is_stmt 1 view .LVU320
|
|||
|
1181 .loc 1 518 37 is_stmt 0 view .LVU321
|
|||
|
1182 0174 A1EB0801 sub r1, r1, r8
|
|||
|
1183 .LVL112:
|
|||
|
1184 .loc 1 518 46 view .LVU322
|
|||
|
1185 0178 0139 subs r1, r1, #1
|
|||
|
1186 .LVL113:
|
|||
|
1187 .loc 1 518 46 view .LVU323
|
|||
|
1188 017a 14E0 b .L89
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 32
|
|||
|
|
|||
|
|
|||
|
1189 .LVL114:
|
|||
|
1190 .L75:
|
|||
|
471:Core/Src/printf.c **** }
|
|||
|
1191 .loc 1 471 5 is_stmt 1 view .LVU324
|
|||
|
471:Core/Src/printf.c **** }
|
|||
|
1192 .loc 1 471 12 is_stmt 0 view .LVU325
|
|||
|
1193 017c CDF80890 str r9, [sp, #8]
|
|||
|
1194 0180 CDF804A0 str r10, [sp, #4]
|
|||
|
1195 0184 0091 str r1, [sp]
|
|||
|
1196 0186 3346 mov r3, r6
|
|||
|
1197 .LVL115:
|
|||
|
471:Core/Src/printf.c **** }
|
|||
|
1198 .loc 1 471 12 view .LVU326
|
|||
|
1199 0188 3A46 mov r2, r7
|
|||
|
1200 .LVL116:
|
|||
|
471:Core/Src/printf.c **** }
|
|||
|
1201 .loc 1 471 12 view .LVU327
|
|||
|
1202 018a 2946 mov r1, r5
|
|||
|
1203 018c 2046 mov r0, r4
|
|||
|
1204 .LVL117:
|
|||
|
471:Core/Src/printf.c **** }
|
|||
|
1205 .loc 1 471 12 view .LVU328
|
|||
|
1206 018e FFF7FEFF bl _ftoa
|
|||
|
1207 .LVL118:
|
|||
|
1208 .L78:
|
|||
|
519:Core/Src/printf.c **** }
|
|||
|
520:Core/Src/printf.c **** else {
|
|||
|
521:Core/Src/printf.c **** prec = 0;
|
|||
|
522:Core/Src/printf.c **** }
|
|||
|
523:Core/Src/printf.c **** flags |= FLAGS_PRECISION; // make sure _ftoa respects precision
|
|||
|
524:Core/Src/printf.c **** // no characters in exponent
|
|||
|
525:Core/Src/printf.c **** minwidth = 0U;
|
|||
|
526:Core/Src/printf.c **** expval = 0;
|
|||
|
527:Core/Src/printf.c **** }
|
|||
|
528:Core/Src/printf.c **** else {
|
|||
|
529:Core/Src/printf.c **** // we use one sigfig for the whole part
|
|||
|
530:Core/Src/printf.c **** if ((prec > 0) && (flags & FLAGS_PRECISION)) {
|
|||
|
531:Core/Src/printf.c **** --prec;
|
|||
|
532:Core/Src/printf.c **** }
|
|||
|
533:Core/Src/printf.c **** }
|
|||
|
534:Core/Src/printf.c **** }
|
|||
|
535:Core/Src/printf.c ****
|
|||
|
536:Core/Src/printf.c **** // will everything fit?
|
|||
|
537:Core/Src/printf.c **** unsigned int fwidth = width;
|
|||
|
538:Core/Src/printf.c **** if (width > minwidth) {
|
|||
|
539:Core/Src/printf.c **** // we didn't fall-back so subtract the characters required for the exponent
|
|||
|
540:Core/Src/printf.c **** fwidth -= minwidth;
|
|||
|
541:Core/Src/printf.c **** } else {
|
|||
|
542:Core/Src/printf.c **** // not enough characters, so go back to default sizing
|
|||
|
543:Core/Src/printf.c **** fwidth = 0U;
|
|||
|
544:Core/Src/printf.c **** }
|
|||
|
545:Core/Src/printf.c **** if ((flags & FLAGS_LEFT) && minwidth) {
|
|||
|
546:Core/Src/printf.c **** // if we're padding on the right, DON'T pad the floating part
|
|||
|
547:Core/Src/printf.c **** fwidth = 0U;
|
|||
|
548:Core/Src/printf.c **** }
|
|||
|
549:Core/Src/printf.c ****
|
|||
|
550:Core/Src/printf.c **** // rescale the float value
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 33
|
|||
|
|
|||
|
|
|||
|
551:Core/Src/printf.c **** if (expval) {
|
|||
|
552:Core/Src/printf.c **** value /= conv.F;
|
|||
|
553:Core/Src/printf.c **** }
|
|||
|
554:Core/Src/printf.c ****
|
|||
|
555:Core/Src/printf.c **** // output the floating part
|
|||
|
556:Core/Src/printf.c **** const size_t start_idx = idx;
|
|||
|
557:Core/Src/printf.c **** idx = _ftoa(out, buffer, idx, maxlen, negative ? -value : value, prec, fwidth, flags & ~FLAGS_ADA
|
|||
|
558:Core/Src/printf.c ****
|
|||
|
559:Core/Src/printf.c **** // output the exponent part
|
|||
|
560:Core/Src/printf.c **** if (minwidth) {
|
|||
|
561:Core/Src/printf.c **** // output the exponential symbol
|
|||
|
562:Core/Src/printf.c **** out((flags & FLAGS_UPPERCASE) ? 'E' : 'e', buffer, idx++, maxlen);
|
|||
|
563:Core/Src/printf.c **** // output the exponent value
|
|||
|
564:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, (expval < 0) ? -expval : expval, expval < 0, 10, 0,
|
|||
|
565:Core/Src/printf.c **** // might need to right-pad spaces
|
|||
|
566:Core/Src/printf.c **** if (flags & FLAGS_LEFT) {
|
|||
|
567:Core/Src/printf.c **** while (idx - start_idx < width) out(' ', buffer, idx++, maxlen);
|
|||
|
568:Core/Src/printf.c **** }
|
|||
|
569:Core/Src/printf.c **** }
|
|||
|
570:Core/Src/printf.c **** return idx;
|
|||
|
571:Core/Src/printf.c **** }
|
|||
|
1209 .loc 1 571 1 view .LVU329
|
|||
|
1210 0192 09B0 add sp, sp, #36
|
|||
|
1211 .LCFI18:
|
|||
|
1212 .cfi_remember_state
|
|||
|
1213 .cfi_def_cfa_offset 36
|
|||
|
1214 @ sp needed
|
|||
|
1215 0194 BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|||
|
1216 .LVL119:
|
|||
|
1217 .L114:
|
|||
|
1218 .LCFI19:
|
|||
|
1219 .cfi_restore_state
|
|||
|
477:Core/Src/printf.c **** }
|
|||
|
1220 .loc 1 477 5 is_stmt 1 view .LVU330
|
|||
|
477:Core/Src/printf.c **** }
|
|||
|
1221 .loc 1 477 11 is_stmt 0 view .LVU331
|
|||
|
1222 0198 B1EE405B vneg.f64 d5, d0
|
|||
|
1223 .LVL120:
|
|||
|
477:Core/Src/printf.c **** }
|
|||
|
1224 .loc 1 477 11 view .LVU332
|
|||
|
1225 019c 5AE7 b .L79
|
|||
|
1226 .LVL121:
|
|||
|
1227 .L100:
|
|||
|
511:Core/Src/printf.c ****
|
|||
|
1228 .loc 1 511 68 view .LVU333
|
|||
|
1229 019e 4FF0050B mov fp, #5
|
|||
|
1230 01a2 D4E7 b .L84
|
|||
|
1231 .LVL122:
|
|||
|
1232 .L101:
|
|||
|
521:Core/Src/printf.c **** }
|
|||
|
1233 .loc 1 521 14 view .LVU334
|
|||
|
1234 01a4 0021 movs r1, #0
|
|||
|
1235 .LVL123:
|
|||
|
1236 .L89:
|
|||
|
523:Core/Src/printf.c **** // no characters in exponent
|
|||
|
1237 .loc 1 523 7 is_stmt 1 view .LVU335
|
|||
|
523:Core/Src/printf.c **** // no characters in exponent
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 34
|
|||
|
|
|||
|
|
|||
|
1238 .loc 1 523 13 is_stmt 0 view .LVU336
|
|||
|
1239 01a6 49F48069 orr r9, r9, #1024
|
|||
|
1240 .LVL124:
|
|||
|
525:Core/Src/printf.c **** expval = 0;
|
|||
|
1241 .loc 1 525 7 is_stmt 1 view .LVU337
|
|||
|
526:Core/Src/printf.c **** }
|
|||
|
1242 .loc 1 526 7 view .LVU338
|
|||
|
525:Core/Src/printf.c **** expval = 0;
|
|||
|
1243 .loc 1 525 16 is_stmt 0 view .LVU339
|
|||
|
1244 01aa 4FF0000B mov fp, #0
|
|||
|
526:Core/Src/printf.c **** }
|
|||
|
1245 .loc 1 526 16 view .LVU340
|
|||
|
1246 01ae D846 mov r8, fp
|
|||
|
1247 .LVL125:
|
|||
|
1248 .L85:
|
|||
|
537:Core/Src/printf.c **** if (width > minwidth) {
|
|||
|
1249 .loc 1 537 3 is_stmt 1 view .LVU341
|
|||
|
538:Core/Src/printf.c **** // we didn't fall-back so subtract the characters required for the exponent
|
|||
|
1250 .loc 1 538 3 view .LVU342
|
|||
|
538:Core/Src/printf.c **** // we didn't fall-back so subtract the characters required for the exponent
|
|||
|
1251 .loc 1 538 6 is_stmt 0 view .LVU343
|
|||
|
1252 01b0 D345 cmp fp, r10
|
|||
|
1253 01b2 08D2 bcs .L102
|
|||
|
540:Core/Src/printf.c **** } else {
|
|||
|
1254 .loc 1 540 5 is_stmt 1 view .LVU344
|
|||
|
540:Core/Src/printf.c **** } else {
|
|||
|
1255 .loc 1 540 12 is_stmt 0 view .LVU345
|
|||
|
1256 01b4 AAEB0B03 sub r3, r10, fp
|
|||
|
1257 .LVL126:
|
|||
|
540:Core/Src/printf.c **** } else {
|
|||
|
1258 .loc 1 540 12 view .LVU346
|
|||
|
1259 01b8 06E0 b .L90
|
|||
|
1260 .LVL127:
|
|||
|
1261 .L86:
|
|||
|
530:Core/Src/printf.c **** --prec;
|
|||
|
1262 .loc 1 530 7 is_stmt 1 view .LVU347
|
|||
|
530:Core/Src/printf.c **** --prec;
|
|||
|
1263 .loc 1 530 10 is_stmt 0 view .LVU348
|
|||
|
1264 01ba 0029 cmp r1, #0
|
|||
|
1265 01bc F8D0 beq .L85
|
|||
|
530:Core/Src/printf.c **** --prec;
|
|||
|
1266 .loc 1 530 22 discriminator 1 view .LVU349
|
|||
|
1267 01be 0028 cmp r0, #0
|
|||
|
1268 01c0 F6D0 beq .L85
|
|||
|
531:Core/Src/printf.c **** }
|
|||
|
1269 .loc 1 531 9 is_stmt 1 view .LVU350
|
|||
|
1270 01c2 0139 subs r1, r1, #1
|
|||
|
1271 .LVL128:
|
|||
|
531:Core/Src/printf.c **** }
|
|||
|
1272 .loc 1 531 9 is_stmt 0 view .LVU351
|
|||
|
1273 01c4 F4E7 b .L85
|
|||
|
1274 .LVL129:
|
|||
|
1275 .L102:
|
|||
|
543:Core/Src/printf.c **** }
|
|||
|
1276 .loc 1 543 12 view .LVU352
|
|||
|
1277 01c6 0023 movs r3, #0
|
|||
|
1278 .LVL130:
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 35
|
|||
|
|
|||
|
|
|||
|
1279 .L90:
|
|||
|
545:Core/Src/printf.c **** // if we're padding on the right, DON'T pad the floating part
|
|||
|
1280 .loc 1 545 3 is_stmt 1 view .LVU353
|
|||
|
545:Core/Src/printf.c **** // if we're padding on the right, DON'T pad the floating part
|
|||
|
1281 .loc 1 545 6 is_stmt 0 view .LVU354
|
|||
|
1282 01c8 19F00202 ands r2, r9, #2
|
|||
|
1283 01cc 0792 str r2, [sp, #28]
|
|||
|
1284 01ce 03D0 beq .L91
|
|||
|
545:Core/Src/printf.c **** // if we're padding on the right, DON'T pad the floating part
|
|||
|
1285 .loc 1 545 28 discriminator 1 view .LVU355
|
|||
|
1286 01d0 BBF1000F cmp fp, #0
|
|||
|
1287 01d4 00D0 beq .L91
|
|||
|
547:Core/Src/printf.c **** }
|
|||
|
1288 .loc 1 547 12 view .LVU356
|
|||
|
1289 01d6 0023 movs r3, #0
|
|||
|
1290 .LVL131:
|
|||
|
1291 .L91:
|
|||
|
551:Core/Src/printf.c **** value /= conv.F;
|
|||
|
1292 .loc 1 551 3 is_stmt 1 view .LVU357
|
|||
|
551:Core/Src/printf.c **** value /= conv.F;
|
|||
|
1293 .loc 1 551 6 is_stmt 0 view .LVU358
|
|||
|
1294 01d8 B8F1000F cmp r8, #0
|
|||
|
1295 01dc 01D0 beq .L92
|
|||
|
552:Core/Src/printf.c **** }
|
|||
|
1296 .loc 1 552 5 is_stmt 1 view .LVU359
|
|||
|
552:Core/Src/printf.c **** }
|
|||
|
1297 .loc 1 552 11 is_stmt 0 view .LVU360
|
|||
|
1298 01de 85EE065B vdiv.f64 d5, d5, d6
|
|||
|
1299 .LVL132:
|
|||
|
1300 .L92:
|
|||
|
556:Core/Src/printf.c **** idx = _ftoa(out, buffer, idx, maxlen, negative ? -value : value, prec, fwidth, flags & ~FLAGS_ADA
|
|||
|
1301 .loc 1 556 3 is_stmt 1 view .LVU361
|
|||
|
557:Core/Src/printf.c ****
|
|||
|
1302 .loc 1 557 3 view .LVU362
|
|||
|
557:Core/Src/printf.c ****
|
|||
|
1303 .loc 1 557 9 is_stmt 0 view .LVU363
|
|||
|
1304 01e2 B5EEC00B vcmpe.f64 d0, #0
|
|||
|
1305 01e6 F1EE10FA vmrs APSR_nzcv, FPSCR
|
|||
|
1306 01ea 37D4 bmi .L115
|
|||
|
1307 .LVL133:
|
|||
|
1308 .L93:
|
|||
|
557:Core/Src/printf.c ****
|
|||
|
1309 .loc 1 557 9 discriminator 4 view .LVU364
|
|||
|
1310 01ec 29F40062 bic r2, r9, #2048
|
|||
|
1311 01f0 0292 str r2, [sp, #8]
|
|||
|
1312 01f2 0193 str r3, [sp, #4]
|
|||
|
1313 01f4 0091 str r1, [sp]
|
|||
|
1314 01f6 B0EE450B vmov.f64 d0, d5
|
|||
|
1315 .LVL134:
|
|||
|
557:Core/Src/printf.c ****
|
|||
|
1316 .loc 1 557 9 discriminator 4 view .LVU365
|
|||
|
1317 01fa 3346 mov r3, r6
|
|||
|
1318 .LVL135:
|
|||
|
557:Core/Src/printf.c ****
|
|||
|
1319 .loc 1 557 9 discriminator 4 view .LVU366
|
|||
|
1320 01fc 3A46 mov r2, r7
|
|||
|
1321 01fe 2946 mov r1, r5
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 36
|
|||
|
|
|||
|
|
|||
|
1322 .LVL136:
|
|||
|
557:Core/Src/printf.c ****
|
|||
|
1323 .loc 1 557 9 discriminator 4 view .LVU367
|
|||
|
1324 0200 2046 mov r0, r4
|
|||
|
1325 0202 FFF7FEFF bl _ftoa
|
|||
|
1326 .LVL137:
|
|||
|
560:Core/Src/printf.c **** // output the exponential symbol
|
|||
|
1327 .loc 1 560 3 is_stmt 1 discriminator 4 view .LVU368
|
|||
|
560:Core/Src/printf.c **** // output the exponential symbol
|
|||
|
1328 .loc 1 560 6 is_stmt 0 discriminator 4 view .LVU369
|
|||
|
1329 0206 BBF1000F cmp fp, #0
|
|||
|
1330 020a C2D0 beq .L78
|
|||
|
562:Core/Src/printf.c **** // output the exponent value
|
|||
|
1331 .loc 1 562 5 is_stmt 1 view .LVU370
|
|||
|
1332 020c 19F0200F tst r9, #32
|
|||
|
1333 0210 27D0 beq .L104
|
|||
|
1334 0212 4FF0450C mov ip, #69
|
|||
|
1335 .L95:
|
|||
|
562:Core/Src/printf.c **** // output the exponent value
|
|||
|
1336 .loc 1 562 5 is_stmt 0 discriminator 4 view .LVU371
|
|||
|
1337 0216 00F10109 add r9, r0, #1
|
|||
|
1338 .LVL138:
|
|||
|
562:Core/Src/printf.c **** // output the exponent value
|
|||
|
1339 .loc 1 562 5 discriminator 4 view .LVU372
|
|||
|
1340 021a 3346 mov r3, r6
|
|||
|
1341 021c 0246 mov r2, r0
|
|||
|
1342 021e 2946 mov r1, r5
|
|||
|
1343 0220 6046 mov r0, ip
|
|||
|
1344 0222 A047 blx r4
|
|||
|
1345 .LVL139:
|
|||
|
564:Core/Src/printf.c **** // might need to right-pad spaces
|
|||
|
1346 .loc 1 564 5 is_stmt 1 discriminator 4 view .LVU373
|
|||
|
564:Core/Src/printf.c **** // might need to right-pad spaces
|
|||
|
1347 .loc 1 564 71 is_stmt 0 discriminator 4 view .LVU374
|
|||
|
1348 0224 88EAE872 eor r2, r8, r8, asr #31
|
|||
|
1349 0228 A2EBE872 sub r2, r2, r8, asr #31
|
|||
|
564:Core/Src/printf.c **** // might need to right-pad spaces
|
|||
|
1350 .loc 1 564 11 discriminator 4 view .LVU375
|
|||
|
1351 022c 0523 movs r3, #5
|
|||
|
1352 022e 0593 str r3, [sp, #20]
|
|||
|
1353 0230 0BF1FF33 add r3, fp, #-1
|
|||
|
1354 0234 0493 str r3, [sp, #16]
|
|||
|
1355 0236 0023 movs r3, #0
|
|||
|
1356 0238 0393 str r3, [sp, #12]
|
|||
|
1357 023a 0A23 movs r3, #10
|
|||
|
1358 023c 0293 str r3, [sp, #8]
|
|||
|
1359 023e 4FEAD873 lsr r3, r8, #31
|
|||
|
1360 0242 0193 str r3, [sp, #4]
|
|||
|
1361 0244 0092 str r2, [sp]
|
|||
|
1362 0246 3346 mov r3, r6
|
|||
|
1363 0248 4A46 mov r2, r9
|
|||
|
1364 024a 2946 mov r1, r5
|
|||
|
1365 024c 2046 mov r0, r4
|
|||
|
1366 024e FFF7FEFF bl _ntoa_long
|
|||
|
1367 .LVL140:
|
|||
|
566:Core/Src/printf.c **** while (idx - start_idx < width) out(' ', buffer, idx++, maxlen);
|
|||
|
1368 .loc 1 566 5 is_stmt 1 discriminator 4 view .LVU376
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 37
|
|||
|
|
|||
|
|
|||
|
566:Core/Src/printf.c **** while (idx - start_idx < width) out(' ', buffer, idx++, maxlen);
|
|||
|
1369 .loc 1 566 8 is_stmt 0 discriminator 4 view .LVU377
|
|||
|
1370 0252 079B ldr r3, [sp, #28]
|
|||
|
1371 0254 002B cmp r3, #0
|
|||
|
1372 0256 9CD0 beq .L78
|
|||
|
1373 0258 0246 mov r2, r0
|
|||
|
1374 025a 0CE0 b .L96
|
|||
|
1375 .LVL141:
|
|||
|
1376 .L115:
|
|||
|
557:Core/Src/printf.c ****
|
|||
|
1377 .loc 1 557 9 discriminator 1 view .LVU378
|
|||
|
1378 025c B1EE455B vneg.f64 d5, d5
|
|||
|
1379 .LVL142:
|
|||
|
557:Core/Src/printf.c ****
|
|||
|
1380 .loc 1 557 9 discriminator 1 view .LVU379
|
|||
|
1381 0260 C4E7 b .L93
|
|||
|
1382 .LVL143:
|
|||
|
1383 .L104:
|
|||
|
562:Core/Src/printf.c **** // output the exponent value
|
|||
|
1384 .loc 1 562 5 view .LVU380
|
|||
|
1385 0262 4FF0650C mov ip, #101
|
|||
|
1386 0266 D6E7 b .L95
|
|||
|
1387 .LVL144:
|
|||
|
1388 .L97:
|
|||
|
567:Core/Src/printf.c **** }
|
|||
|
1389 .loc 1 567 39 is_stmt 1 discriminator 2 view .LVU381
|
|||
|
1390 0268 02F10108 add r8, r2, #1
|
|||
|
1391 .LVL145:
|
|||
|
567:Core/Src/printf.c **** }
|
|||
|
1392 .loc 1 567 39 is_stmt 0 discriminator 2 view .LVU382
|
|||
|
1393 026c 3346 mov r3, r6
|
|||
|
1394 026e 2946 mov r1, r5
|
|||
|
1395 0270 2020 movs r0, #32
|
|||
|
1396 0272 A047 blx r4
|
|||
|
1397 .LVL146:
|
|||
|
1398 0274 4246 mov r2, r8
|
|||
|
1399 .LVL147:
|
|||
|
1400 .L96:
|
|||
|
567:Core/Src/printf.c **** }
|
|||
|
1401 .loc 1 567 13 is_stmt 1 discriminator 1 view .LVU383
|
|||
|
567:Core/Src/printf.c **** }
|
|||
|
1402 .loc 1 567 18 is_stmt 0 discriminator 1 view .LVU384
|
|||
|
1403 0276 D31B subs r3, r2, r7
|
|||
|
567:Core/Src/printf.c **** }
|
|||
|
1404 .loc 1 567 13 discriminator 1 view .LVU385
|
|||
|
1405 0278 5345 cmp r3, r10
|
|||
|
1406 027a F5D3 bcc .L97
|
|||
|
567:Core/Src/printf.c **** }
|
|||
|
1407 .loc 1 567 13 discriminator 1 view .LVU386
|
|||
|
1408 027c 1046 mov r0, r2
|
|||
|
1409 027e 88E7 b .L78
|
|||
|
1410 .L117:
|
|||
|
1411 .align 3
|
|||
|
1412 .L116:
|
|||
|
1413 0280 FFFFFFFF .word -1
|
|||
|
1414 0284 FFFFEF7F .word 2146435071
|
|||
|
1415 0288 FFFFFFFF .word -1
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 38
|
|||
|
|
|||
|
|
|||
|
1416 028c FFFFEFFF .word -1048577
|
|||
|
1417 0290 FB799F50 .word 1352628731
|
|||
|
1418 0294 1344D33F .word 1070810131
|
|||
|
1419 0298 B3C8608B .word -1956591437
|
|||
|
1420 029c 288AC63F .word 1069976104
|
|||
|
1421 02a0 61436F63 .word 1668236129
|
|||
|
1422 02a4 A787D23F .word 1070761895
|
|||
|
1423 02a8 71A37909 .word 158966641
|
|||
|
1424 02ac 4F930A40 .word 1074434895
|
|||
|
1425 02b0 EF39FAFE .word -17155601
|
|||
|
1426 02b4 422EE63F .word 1072049730
|
|||
|
1427 02b8 1655B5BB .word -1145744106
|
|||
|
1428 02bc B16B0240 .word 1073900465
|
|||
|
1429 02c0 2D431CEB .word -350469331
|
|||
|
1430 02c4 E2361A3F .word 1058682594
|
|||
|
1431 02c8 00000000 .word 0
|
|||
|
1432 02cc 80842E41 .word 1093567616
|
|||
|
1433 .cfi_endproc
|
|||
|
1434 .LFE12:
|
|||
|
1436 .section .rodata._ftoa.str1.4,"aMS",%progbits,1
|
|||
|
1437 .align 2
|
|||
|
1438 .LC0:
|
|||
|
1439 0000 666E6900 .ascii "fni\000"
|
|||
|
1440 .align 2
|
|||
|
1441 .LC1:
|
|||
|
1442 0004 666E692B .ascii "fni+\000"
|
|||
|
1442 00
|
|||
|
1443 0009 000000 .align 2
|
|||
|
1444 .LC2:
|
|||
|
1445 000c 6E616E00 .ascii "nan\000"
|
|||
|
1446 .align 2
|
|||
|
1447 .LC3:
|
|||
|
1448 0010 666E692D .ascii "fni-\000"
|
|||
|
1448 00
|
|||
|
1449 .section .text._ftoa,"ax",%progbits
|
|||
|
1450 .align 1
|
|||
|
1451 .syntax unified
|
|||
|
1452 .thumb
|
|||
|
1453 .thumb_func
|
|||
|
1454 .fpu fpv5-d16
|
|||
|
1456 _ftoa:
|
|||
|
1457 .LVL148:
|
|||
|
1458 .LFB11:
|
|||
|
340:Core/Src/printf.c **** char buf[PRINTF_FTOA_BUFFER_SIZE];
|
|||
|
1459 .loc 1 340 1 is_stmt 1 view -0
|
|||
|
1460 .cfi_startproc
|
|||
|
1461 @ args = 12, pretend = 0, frame = 40
|
|||
|
1462 @ frame_needed = 0, uses_anonymous_args = 0
|
|||
|
340:Core/Src/printf.c **** char buf[PRINTF_FTOA_BUFFER_SIZE];
|
|||
|
1463 .loc 1 340 1 is_stmt 0 view .LVU388
|
|||
|
1464 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|||
|
1465 .LCFI20:
|
|||
|
1466 .cfi_def_cfa_offset 36
|
|||
|
1467 .cfi_offset 4, -36
|
|||
|
1468 .cfi_offset 5, -32
|
|||
|
1469 .cfi_offset 6, -28
|
|||
|
1470 .cfi_offset 7, -24
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 39
|
|||
|
|
|||
|
|
|||
|
1471 .cfi_offset 8, -20
|
|||
|
1472 .cfi_offset 9, -16
|
|||
|
1473 .cfi_offset 10, -12
|
|||
|
1474 .cfi_offset 11, -8
|
|||
|
1475 .cfi_offset 14, -4
|
|||
|
1476 0004 8FB0 sub sp, sp, #60
|
|||
|
1477 .LCFI21:
|
|||
|
1478 .cfi_def_cfa_offset 96
|
|||
|
1479 0006 189D ldr r5, [sp, #96]
|
|||
|
1480 0008 199F ldr r7, [sp, #100]
|
|||
|
1481 000a 1A9E ldr r6, [sp, #104]
|
|||
|
341:Core/Src/printf.c **** size_t len = 0U;
|
|||
|
1482 .loc 1 341 3 is_stmt 1 view .LVU389
|
|||
|
342:Core/Src/printf.c **** double diff = 0.0;
|
|||
|
1483 .loc 1 342 3 view .LVU390
|
|||
|
1484 .LVL149:
|
|||
|
343:Core/Src/printf.c ****
|
|||
|
1485 .loc 1 343 3 view .LVU391
|
|||
|
346:Core/Src/printf.c ****
|
|||
|
1486 .loc 1 346 3 view .LVU392
|
|||
|
349:Core/Src/printf.c **** return _out_rev(out, buffer, idx, maxlen, "nan", 3, width, flags);
|
|||
|
1487 .loc 1 349 3 view .LVU393
|
|||
|
349:Core/Src/printf.c **** return _out_rev(out, buffer, idx, maxlen, "nan", 3, width, flags);
|
|||
|
1488 .loc 1 349 6 is_stmt 0 view .LVU394
|
|||
|
1489 000c B4EE400B vcmp.f64 d0, d0
|
|||
|
1490 0010 F1EE10FA vmrs APSR_nzcv, FPSCR
|
|||
|
1491 0014 28D1 bne .L180
|
|||
|
351:Core/Src/printf.c **** return _out_rev(out, buffer, idx, maxlen, "fni-", 4, width, flags);
|
|||
|
1492 .loc 1 351 3 is_stmt 1 view .LVU395
|
|||
|
351:Core/Src/printf.c **** return _out_rev(out, buffer, idx, maxlen, "fni-", 4, width, flags);
|
|||
|
1493 .loc 1 351 6 is_stmt 0 view .LVU396
|
|||
|
1494 0016 9FEDAC7B vldr.64 d7, .L185
|
|||
|
1495 001a B4EEC70B vcmpe.f64 d0, d7
|
|||
|
1496 001e F1EE10FA vmrs APSR_nzcv, FPSCR
|
|||
|
1497 0022 2AD4 bmi .L181
|
|||
|
353:Core/Src/printf.c **** return _out_rev(out, buffer, idx, maxlen, (flags & FLAGS_PLUS) ? "fni+" : "fni", (flags & FLAGS
|
|||
|
1498 .loc 1 353 3 is_stmt 1 view .LVU397
|
|||
|
353:Core/Src/printf.c **** return _out_rev(out, buffer, idx, maxlen, (flags & FLAGS_PLUS) ? "fni+" : "fni", (flags & FLAGS
|
|||
|
1499 .loc 1 353 6 is_stmt 0 view .LVU398
|
|||
|
1500 0024 9FEDAA7B vldr.64 d7, .L185+8
|
|||
|
1501 0028 B4EEC70B vcmpe.f64 d0, d7
|
|||
|
1502 002c F1EE10FA vmrs APSR_nzcv, FPSCR
|
|||
|
1503 0030 2CDC bgt .L182
|
|||
|
358:Core/Src/printf.c **** #if defined(PRINTF_SUPPORT_EXPONENTIAL)
|
|||
|
1504 .loc 1 358 3 is_stmt 1 view .LVU399
|
|||
|
358:Core/Src/printf.c **** #if defined(PRINTF_SUPPORT_EXPONENTIAL)
|
|||
|
1505 .loc 1 358 6 is_stmt 0 view .LVU400
|
|||
|
1506 0032 9FEDA97B vldr.64 d7, .L185+16
|
|||
|
1507 0036 B4EEC70B vcmpe.f64 d0, d7
|
|||
|
1508 003a F1EE10FA vmrs APSR_nzcv, FPSCR
|
|||
|
1509 003e 36DC bgt .L127
|
|||
|
358:Core/Src/printf.c **** #if defined(PRINTF_SUPPORT_EXPONENTIAL)
|
|||
|
1510 .loc 1 358 34 discriminator 1 view .LVU401
|
|||
|
1511 0040 9FEDA77B vldr.64 d7, .L185+24
|
|||
|
1512 0044 B4EEC70B vcmpe.f64 d0, d7
|
|||
|
1513 0048 F1EE10FA vmrs APSR_nzcv, FPSCR
|
|||
|
1514 004c 2FD4 bmi .L127
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 40
|
|||
|
|
|||
|
|
|||
|
367:Core/Src/printf.c **** if (value < 0) {
|
|||
|
1515 .loc 1 367 3 is_stmt 1 view .LVU402
|
|||
|
1516 .LVL150:
|
|||
|
368:Core/Src/printf.c **** negative = true;
|
|||
|
1517 .loc 1 368 3 view .LVU403
|
|||
|
368:Core/Src/printf.c **** negative = true;
|
|||
|
1518 .loc 1 368 6 is_stmt 0 view .LVU404
|
|||
|
1519 004e B5EEC00B vcmpe.f64 d0, #0
|
|||
|
1520 0052 F1EE10FA vmrs APSR_nzcv, FPSCR
|
|||
|
1521 0056 30D4 bmi .L183
|
|||
|
367:Core/Src/printf.c **** if (value < 0) {
|
|||
|
1522 .loc 1 367 8 view .LVU405
|
|||
|
1523 0058 0024 movs r4, #0
|
|||
|
1524 005a 0594 str r4, [sp, #20]
|
|||
|
1525 .LVL151:
|
|||
|
1526 .L130:
|
|||
|
374:Core/Src/printf.c **** prec = PRINTF_DEFAULT_FLOAT_PRECISION;
|
|||
|
1527 .loc 1 374 3 is_stmt 1 view .LVU406
|
|||
|
374:Core/Src/printf.c **** prec = PRINTF_DEFAULT_FLOAT_PRECISION;
|
|||
|
1528 .loc 1 374 6 is_stmt 0 view .LVU407
|
|||
|
1529 005c 16F4806F tst r6, #1024
|
|||
|
1530 0060 00F08B80 beq .L165
|
|||
|
1531 .L132:
|
|||
|
1532 .LVL152:
|
|||
|
375:Core/Src/printf.c **** }
|
|||
|
1533 .loc 1 375 10 view .LVU408
|
|||
|
1534 0064 0024 movs r4, #0
|
|||
|
1535 0066 38E0 b .L134
|
|||
|
1536 .LVL153:
|
|||
|
1537 .L180:
|
|||
|
350:Core/Src/printf.c **** if (value < -DBL_MAX)
|
|||
|
1538 .loc 1 350 5 is_stmt 1 view .LVU409
|
|||
|
350:Core/Src/printf.c **** if (value < -DBL_MAX)
|
|||
|
1539 .loc 1 350 12 is_stmt 0 view .LVU410
|
|||
|
1540 0068 0396 str r6, [sp, #12]
|
|||
|
1541 006a 0297 str r7, [sp, #8]
|
|||
|
1542 006c 0324 movs r4, #3
|
|||
|
1543 006e 0194 str r4, [sp, #4]
|
|||
|
1544 0070 9F4C ldr r4, .L185+40
|
|||
|
1545 0072 0094 str r4, [sp]
|
|||
|
1546 0074 FFF7FEFF bl _out_rev
|
|||
|
1547 .LVL154:
|
|||
|
350:Core/Src/printf.c **** if (value < -DBL_MAX)
|
|||
|
1548 .loc 1 350 12 view .LVU411
|
|||
|
1549 0078 F9E0 b .L118
|
|||
|
1550 .LVL155:
|
|||
|
1551 .L181:
|
|||
|
352:Core/Src/printf.c **** if (value > DBL_MAX)
|
|||
|
1552 .loc 1 352 5 is_stmt 1 view .LVU412
|
|||
|
352:Core/Src/printf.c **** if (value > DBL_MAX)
|
|||
|
1553 .loc 1 352 12 is_stmt 0 view .LVU413
|
|||
|
1554 007a 0396 str r6, [sp, #12]
|
|||
|
1555 007c 0297 str r7, [sp, #8]
|
|||
|
1556 007e 0424 movs r4, #4
|
|||
|
1557 0080 0194 str r4, [sp, #4]
|
|||
|
1558 0082 9C4C ldr r4, .L185+44
|
|||
|
1559 0084 0094 str r4, [sp]
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 41
|
|||
|
|
|||
|
|
|||
|
1560 0086 FFF7FEFF bl _out_rev
|
|||
|
1561 .LVL156:
|
|||
|
352:Core/Src/printf.c **** if (value > DBL_MAX)
|
|||
|
1562 .loc 1 352 12 view .LVU414
|
|||
|
1563 008a F0E0 b .L118
|
|||
|
1564 .LVL157:
|
|||
|
1565 .L182:
|
|||
|
354:Core/Src/printf.c ****
|
|||
|
1566 .loc 1 354 5 is_stmt 1 view .LVU415
|
|||
|
354:Core/Src/printf.c ****
|
|||
|
1567 .loc 1 354 12 is_stmt 0 view .LVU416
|
|||
|
1568 008c 16F00405 ands r5, r6, #4
|
|||
|
1569 0090 09D0 beq .L162
|
|||
|
1570 0092 994C ldr r4, .L185+48
|
|||
|
1571 .L125:
|
|||
|
354:Core/Src/printf.c ****
|
|||
|
1572 .loc 1 354 12 discriminator 4 view .LVU417
|
|||
|
1573 0094 4DB1 cbz r5, .L163
|
|||
|
354:Core/Src/printf.c ****
|
|||
|
1574 .loc 1 354 12 view .LVU418
|
|||
|
1575 0096 0425 movs r5, #4
|
|||
|
1576 .L126:
|
|||
|
354:Core/Src/printf.c ****
|
|||
|
1577 .loc 1 354 12 discriminator 8 view .LVU419
|
|||
|
1578 0098 0396 str r6, [sp, #12]
|
|||
|
1579 009a 0297 str r7, [sp, #8]
|
|||
|
1580 009c 0195 str r5, [sp, #4]
|
|||
|
1581 009e 0094 str r4, [sp]
|
|||
|
1582 00a0 FFF7FEFF bl _out_rev
|
|||
|
1583 .LVL158:
|
|||
|
354:Core/Src/printf.c ****
|
|||
|
1584 .loc 1 354 12 discriminator 8 view .LVU420
|
|||
|
1585 00a4 E3E0 b .L118
|
|||
|
1586 .LVL159:
|
|||
|
1587 .L162:
|
|||
|
354:Core/Src/printf.c ****
|
|||
|
1588 .loc 1 354 12 view .LVU421
|
|||
|
1589 00a6 954C ldr r4, .L185+52
|
|||
|
1590 00a8 F4E7 b .L125
|
|||
|
1591 .L163:
|
|||
|
1592 00aa 0325 movs r5, #3
|
|||
|
1593 00ac F4E7 b .L126
|
|||
|
1594 .L127:
|
|||
|
360:Core/Src/printf.c **** #else
|
|||
|
1595 .loc 1 360 5 is_stmt 1 view .LVU422
|
|||
|
360:Core/Src/printf.c **** #else
|
|||
|
1596 .loc 1 360 12 is_stmt 0 view .LVU423
|
|||
|
1597 00ae 0296 str r6, [sp, #8]
|
|||
|
1598 00b0 0197 str r7, [sp, #4]
|
|||
|
1599 00b2 0095 str r5, [sp]
|
|||
|
1600 00b4 FFF7FEFF bl _etoa
|
|||
|
1601 .LVL160:
|
|||
|
360:Core/Src/printf.c **** #else
|
|||
|
1602 .loc 1 360 12 view .LVU424
|
|||
|
1603 00b8 D9E0 b .L118
|
|||
|
1604 .LVL161:
|
|||
|
1605 .L183:
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 42
|
|||
|
|
|||
|
|
|||
|
369:Core/Src/printf.c **** value = 0 - value;
|
|||
|
1606 .loc 1 369 5 is_stmt 1 view .LVU425
|
|||
|
370:Core/Src/printf.c **** }
|
|||
|
1607 .loc 1 370 5 view .LVU426
|
|||
|
370:Core/Src/printf.c **** }
|
|||
|
1608 .loc 1 370 11 is_stmt 0 view .LVU427
|
|||
|
1609 00ba 9FED8B7B vldr.64 d7, .L185+32
|
|||
|
1610 00be 37EE400B vsub.f64 d0, d7, d0
|
|||
|
1611 .LVL162:
|
|||
|
369:Core/Src/printf.c **** value = 0 - value;
|
|||
|
1612 .loc 1 369 14 view .LVU428
|
|||
|
1613 00c2 0124 movs r4, #1
|
|||
|
1614 00c4 0594 str r4, [sp, #20]
|
|||
|
1615 00c6 C9E7 b .L130
|
|||
|
1616 .LVL163:
|
|||
|
1617 .L135:
|
|||
|
379:Core/Src/printf.c **** prec--;
|
|||
|
1618 .loc 1 379 5 is_stmt 1 view .LVU429
|
|||
|
379:Core/Src/printf.c **** prec--;
|
|||
|
1619 .loc 1 379 16 is_stmt 0 view .LVU430
|
|||
|
1620 00c8 0DF1380C add ip, sp, #56
|
|||
|
1621 00cc A444 add ip, ip, r4
|
|||
|
1622 00ce 4FF03008 mov r8, #48
|
|||
|
1623 00d2 0CF8208C strb r8, [ip, #-32]
|
|||
|
380:Core/Src/printf.c **** }
|
|||
|
1624 .loc 1 380 5 is_stmt 1 view .LVU431
|
|||
|
380:Core/Src/printf.c **** }
|
|||
|
1625 .loc 1 380 9 is_stmt 0 view .LVU432
|
|||
|
1626 00d6 013D subs r5, r5, #1
|
|||
|
1627 .LVL164:
|
|||
|
379:Core/Src/printf.c **** prec--;
|
|||
|
1628 .loc 1 379 12 view .LVU433
|
|||
|
1629 00d8 0134 adds r4, r4, #1
|
|||
|
1630 .LVL165:
|
|||
|
1631 .L134:
|
|||
|
378:Core/Src/printf.c **** buf[len++] = '0';
|
|||
|
1632 .loc 1 378 9 is_stmt 1 view .LVU434
|
|||
|
378:Core/Src/printf.c **** buf[len++] = '0';
|
|||
|
1633 .loc 1 378 42 is_stmt 0 view .LVU435
|
|||
|
1634 00da 1F2C cmp r4, #31
|
|||
|
1635 00dc 8CBF ite hi
|
|||
|
1636 00de 4FF0000C movhi ip, #0
|
|||
|
1637 00e2 4FF0010C movls ip, #1
|
|||
|
1638 00e6 092D cmp r5, #9
|
|||
|
1639 00e8 98BF it ls
|
|||
|
1640 00ea 4FF0000C movls ip, #0
|
|||
|
378:Core/Src/printf.c **** buf[len++] = '0';
|
|||
|
1641 .loc 1 378 9 view .LVU436
|
|||
|
1642 00ee BCF1000F cmp ip, #0
|
|||
|
1643 00f2 E9D1 bne .L135
|
|||
|
383:Core/Src/printf.c **** double tmp = (value - whole) * pow10[prec];
|
|||
|
1644 .loc 1 383 3 is_stmt 1 view .LVU437
|
|||
|
383:Core/Src/printf.c **** double tmp = (value - whole) * pow10[prec];
|
|||
|
1645 .loc 1 383 7 is_stmt 0 view .LVU438
|
|||
|
1646 00f4 FDEEC07B vcvt.s32.f64 s15, d0
|
|||
|
1647 00f8 17EE908A vmov r8, s15 @ int
|
|||
|
1648 .LVL166:
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 43
|
|||
|
|
|||
|
|
|||
|
384:Core/Src/printf.c **** unsigned long frac = (unsigned long)tmp;
|
|||
|
1649 .loc 1 384 3 is_stmt 1 view .LVU439
|
|||
|
384:Core/Src/printf.c **** unsigned long frac = (unsigned long)tmp;
|
|||
|
1650 .loc 1 384 23 is_stmt 0 view .LVU440
|
|||
|
1651 00fc B8EEE77B vcvt.f64.s32 d7, s15
|
|||
|
1652 0100 30EE477B vsub.f64 d7, d0, d7
|
|||
|
384:Core/Src/printf.c **** unsigned long frac = (unsigned long)tmp;
|
|||
|
1653 .loc 1 384 39 view .LVU441
|
|||
|
1654 0104 DFF8FCC1 ldr ip, .L185+60
|
|||
|
1655 0108 0CEBC50C add ip, ip, r5, lsl #3
|
|||
|
1656 010c 9CED006B vldr.64 d6, [ip]
|
|||
|
384:Core/Src/printf.c **** unsigned long frac = (unsigned long)tmp;
|
|||
|
1657 .loc 1 384 10 view .LVU442
|
|||
|
1658 0110 27EE067B vmul.f64 d7, d7, d6
|
|||
|
1659 .LVL167:
|
|||
|
385:Core/Src/printf.c **** diff = tmp - frac;
|
|||
|
1660 .loc 1 385 3 is_stmt 1 view .LVU443
|
|||
|
385:Core/Src/printf.c **** diff = tmp - frac;
|
|||
|
1661 .loc 1 385 17 is_stmt 0 view .LVU444
|
|||
|
1662 0114 FCEEC75B vcvt.u32.f64 s11, d7
|
|||
|
1663 0118 15EE909A vmov r9, s11 @ int
|
|||
|
1664 .LVL168:
|
|||
|
386:Core/Src/printf.c ****
|
|||
|
1665 .loc 1 386 3 is_stmt 1 view .LVU445
|
|||
|
386:Core/Src/printf.c ****
|
|||
|
1666 .loc 1 386 14 is_stmt 0 view .LVU446
|
|||
|
1667 011c B8EE655B vcvt.f64.u32 d5, s11
|
|||
|
386:Core/Src/printf.c ****
|
|||
|
1668 .loc 1 386 8 view .LVU447
|
|||
|
1669 0120 37EE457B vsub.f64 d7, d7, d5
|
|||
|
1670 .LVL169:
|
|||
|
388:Core/Src/printf.c **** ++frac;
|
|||
|
1671 .loc 1 388 3 is_stmt 1 view .LVU448
|
|||
|
388:Core/Src/printf.c **** ++frac;
|
|||
|
1672 .loc 1 388 6 is_stmt 0 view .LVU449
|
|||
|
1673 0124 B6EE005B vmov.f64 d5, #5.0e-1
|
|||
|
1674 0128 B4EEC57B vcmpe.f64 d7, d5
|
|||
|
1675 012c F1EE10FA vmrs APSR_nzcv, FPSCR
|
|||
|
1676 0130 25DD ble .L178
|
|||
|
389:Core/Src/printf.c **** // handle rollover, e.g. case 0.99 with prec 1 is 1.0
|
|||
|
1677 .loc 1 389 5 is_stmt 1 view .LVU450
|
|||
|
1678 0132 09F10109 add r9, r9, #1
|
|||
|
1679 .LVL170:
|
|||
|
391:Core/Src/printf.c **** frac = 0;
|
|||
|
1680 .loc 1 391 5 view .LVU451
|
|||
|
391:Core/Src/printf.c **** frac = 0;
|
|||
|
1681 .loc 1 391 14 is_stmt 0 view .LVU452
|
|||
|
1682 0136 07EE909A vmov s15, r9 @ int
|
|||
|
1683 013a B8EE677B vcvt.f64.u32 d7, s15
|
|||
|
1684 .LVL171:
|
|||
|
391:Core/Src/printf.c **** frac = 0;
|
|||
|
1685 .loc 1 391 8 view .LVU453
|
|||
|
1686 013e B4EEC76B vcmpe.f64 d6, d7
|
|||
|
1687 0142 F1EE10FA vmrs APSR_nzcv, FPSCR
|
|||
|
1688 0146 03D8 bhi .L138
|
|||
|
392:Core/Src/printf.c **** ++whole;
|
|||
|
1689 .loc 1 392 7 is_stmt 1 view .LVU454
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 44
|
|||
|
|
|||
|
|
|||
|
1690 .LVL172:
|
|||
|
393:Core/Src/printf.c **** }
|
|||
|
1691 .loc 1 393 7 view .LVU455
|
|||
|
1692 0148 08F10108 add r8, r8, #1
|
|||
|
1693 .LVL173:
|
|||
|
392:Core/Src/printf.c **** ++whole;
|
|||
|
1694 .loc 1 392 12 is_stmt 0 view .LVU456
|
|||
|
1695 014c 4FF00009 mov r9, #0
|
|||
|
1696 .LVL174:
|
|||
|
1697 .L138:
|
|||
|
403:Core/Src/printf.c **** diff = value - (double)whole;
|
|||
|
1698 .loc 1 403 3 is_stmt 1 view .LVU457
|
|||
|
403:Core/Src/printf.c **** diff = value - (double)whole;
|
|||
|
1699 .loc 1 403 6 is_stmt 0 view .LVU458
|
|||
|
1700 0150 2DBB cbnz r5, .L141
|
|||
|
404:Core/Src/printf.c **** if ((!(diff < 0.5) || (diff > 0.5)) && (whole & 1)) {
|
|||
|
1701 .loc 1 404 5 is_stmt 1 view .LVU459
|
|||
|
404:Core/Src/printf.c **** if ((!(diff < 0.5) || (diff > 0.5)) && (whole & 1)) {
|
|||
|
1702 .loc 1 404 20 is_stmt 0 view .LVU460
|
|||
|
1703 0152 07EE908A vmov s15, r8 @ int
|
|||
|
1704 0156 B8EEE77B vcvt.f64.s32 d7, s15
|
|||
|
404:Core/Src/printf.c **** if ((!(diff < 0.5) || (diff > 0.5)) && (whole & 1)) {
|
|||
|
1705 .loc 1 404 10 view .LVU461
|
|||
|
1706 015a 30EE470B vsub.f64 d0, d0, d7
|
|||
|
1707 .LVL175:
|
|||
|
405:Core/Src/printf.c **** // exactly 0.5 and ODD, then round up
|
|||
|
1708 .loc 1 405 5 is_stmt 1 view .LVU462
|
|||
|
405:Core/Src/printf.c **** // exactly 0.5 and ODD, then round up
|
|||
|
1709 .loc 1 405 8 is_stmt 0 view .LVU463
|
|||
|
1710 015e B6EE007B vmov.f64 d7, #5.0e-1
|
|||
|
1711 0162 B4EEC70B vcmpe.f64 d0, d7
|
|||
|
1712 0166 F1EE10FA vmrs APSR_nzcv, FPSCR
|
|||
|
1713 016a 00D5 bpl .L142
|
|||
|
405:Core/Src/printf.c **** // exactly 0.5 and ODD, then round up
|
|||
|
1714 .loc 1 405 24 discriminator 2 view .LVU464
|
|||
|
1715 016c 4BDD ble .L152
|
|||
|
1716 .L142:
|
|||
|
405:Core/Src/printf.c **** // exactly 0.5 and ODD, then round up
|
|||
|
1717 .loc 1 405 41 discriminator 3 view .LVU465
|
|||
|
1718 016e 18F0010F tst r8, #1
|
|||
|
1719 0172 48D0 beq .L152
|
|||
|
408:Core/Src/printf.c **** }
|
|||
|
1720 .loc 1 408 7 is_stmt 1 view .LVU466
|
|||
|
1721 0174 08F10108 add r8, r8, #1
|
|||
|
1722 .LVL176:
|
|||
|
408:Core/Src/printf.c **** }
|
|||
|
1723 .loc 1 408 7 is_stmt 0 view .LVU467
|
|||
|
1724 0178 45E0 b .L152
|
|||
|
1725 .LVL177:
|
|||
|
1726 .L165:
|
|||
|
375:Core/Src/printf.c **** }
|
|||
|
1727 .loc 1 375 10 view .LVU468
|
|||
|
1728 017a 0625 movs r5, #6
|
|||
|
1729 017c 72E7 b .L132
|
|||
|
1730 .LVL178:
|
|||
|
1731 .L178:
|
|||
|
396:Core/Src/printf.c **** }
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 45
|
|||
|
|
|||
|
|
|||
|
1732 .loc 1 396 8 is_stmt 1 view .LVU469
|
|||
|
396:Core/Src/printf.c **** }
|
|||
|
1733 .loc 1 396 11 is_stmt 0 view .LVU470
|
|||
|
1734 017e B6EE006B vmov.f64 d6, #5.0e-1
|
|||
|
1735 .LVL179:
|
|||
|
396:Core/Src/printf.c **** }
|
|||
|
1736 .loc 1 396 11 view .LVU471
|
|||
|
1737 0182 B4EEC67B vcmpe.f64 d7, d6
|
|||
|
1738 0186 F1EE10FA vmrs APSR_nzcv, FPSCR
|
|||
|
1739 018a E1D4 bmi .L138
|
|||
|
398:Core/Src/printf.c **** // if halfway, round up if odd OR if last digit is 0
|
|||
|
1740 .loc 1 398 8 is_stmt 1 view .LVU472
|
|||
|
398:Core/Src/printf.c **** // if halfway, round up if odd OR if last digit is 0
|
|||
|
1741 .loc 1 398 11 is_stmt 0 view .LVU473
|
|||
|
1742 018c B9F1000F cmp r9, #0
|
|||
|
1743 0190 02D0 beq .L140
|
|||
|
398:Core/Src/printf.c **** // if halfway, round up if odd OR if last digit is 0
|
|||
|
1744 .loc 1 398 25 discriminator 1 view .LVU474
|
|||
|
1745 0192 19F0010F tst r9, #1
|
|||
|
1746 0196 DBD0 beq .L138
|
|||
|
1747 .L140:
|
|||
|
400:Core/Src/printf.c **** }
|
|||
|
1748 .loc 1 400 5 is_stmt 1 view .LVU475
|
|||
|
1749 0198 09F10109 add r9, r9, #1
|
|||
|
1750 .LVL180:
|
|||
|
400:Core/Src/printf.c **** }
|
|||
|
1751 .loc 1 400 5 is_stmt 0 view .LVU476
|
|||
|
1752 019c D8E7 b .L138
|
|||
|
1753 .LVL181:
|
|||
|
1754 .L141:
|
|||
|
1755 .LBB30:
|
|||
|
414:Core/Src/printf.c **** --count;
|
|||
|
1756 .loc 1 414 11 is_stmt 1 view .LVU477
|
|||
|
1757 019e 1F2C cmp r4, #31
|
|||
|
1758 01a0 22D8 bhi .L148
|
|||
|
415:Core/Src/printf.c **** buf[len++] = (char)(48U + (frac % 10U));
|
|||
|
1759 .loc 1 415 7 view .LVU478
|
|||
|
1760 01a2 013D subs r5, r5, #1
|
|||
|
1761 .LVL182:
|
|||
|
416:Core/Src/printf.c **** if (!(frac /= 10U)) {
|
|||
|
1762 .loc 1 416 7 view .LVU479
|
|||
|
416:Core/Src/printf.c **** if (!(frac /= 10U)) {
|
|||
|
1763 .loc 1 416 39 is_stmt 0 view .LVU480
|
|||
|
1764 01a4 DFF860C1 ldr ip, .L185+64
|
|||
|
1765 01a8 ACFB09EC umull lr, ip, ip, r9
|
|||
|
1766 01ac 4FEADC0C lsr ip, ip, #3
|
|||
|
1767 01b0 E346 mov fp, ip
|
|||
|
1768 01b2 0CEB8C0C add ip, ip, ip, lsl #2
|
|||
|
1769 01b6 A9EB4C0C sub ip, r9, ip, lsl #1
|
|||
|
416:Core/Src/printf.c **** if (!(frac /= 10U)) {
|
|||
|
1770 .loc 1 416 14 view .LVU481
|
|||
|
1771 01ba 04F1010A add r10, r4, #1
|
|||
|
1772 .LVL183:
|
|||
|
416:Core/Src/printf.c **** if (!(frac /= 10U)) {
|
|||
|
1773 .loc 1 416 20 view .LVU482
|
|||
|
1774 01be 0CF1300C add ip, ip, #48
|
|||
|
416:Core/Src/printf.c **** if (!(frac /= 10U)) {
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 46
|
|||
|
|
|||
|
|
|||
|
1775 .loc 1 416 18 view .LVU483
|
|||
|
1776 01c2 0DF1380E add lr, sp, #56
|
|||
|
1777 01c6 7444 add r4, r4, lr
|
|||
|
1778 01c8 04F820CC strb ip, [r4, #-32]
|
|||
|
417:Core/Src/printf.c **** break;
|
|||
|
1779 .loc 1 417 7 is_stmt 1 view .LVU484
|
|||
|
1780 .LVL184:
|
|||
|
417:Core/Src/printf.c **** break;
|
|||
|
1781 .loc 1 417 10 is_stmt 0 view .LVU485
|
|||
|
1782 01cc B9F1090F cmp r9, #9
|
|||
|
1783 01d0 34D9 bls .L166
|
|||
|
417:Core/Src/printf.c **** break;
|
|||
|
1784 .loc 1 417 18 view .LVU486
|
|||
|
1785 01d2 D946 mov r9, fp
|
|||
|
416:Core/Src/printf.c **** if (!(frac /= 10U)) {
|
|||
|
1786 .loc 1 416 14 view .LVU487
|
|||
|
1787 01d4 5446 mov r4, r10
|
|||
|
1788 01d6 E2E7 b .L141
|
|||
|
1789 .LVL185:
|
|||
|
1790 .L150:
|
|||
|
423:Core/Src/printf.c **** }
|
|||
|
1791 .loc 1 423 7 is_stmt 1 view .LVU488
|
|||
|
423:Core/Src/printf.c **** }
|
|||
|
1792 .loc 1 423 18 is_stmt 0 view .LVU489
|
|||
|
1793 01d8 0EAD add r5, sp, #56
|
|||
|
1794 01da 2544 add r5, r5, r4
|
|||
|
1795 01dc 4FF03009 mov r9, #48
|
|||
|
1796 01e0 05F8209C strb r9, [r5, #-32]
|
|||
|
422:Core/Src/printf.c **** buf[len++] = '0';
|
|||
|
1797 .loc 1 422 53 view .LVU490
|
|||
|
1798 01e4 6546 mov r5, ip
|
|||
|
423:Core/Src/printf.c **** }
|
|||
|
1799 .loc 1 423 14 view .LVU491
|
|||
|
1800 01e6 0134 adds r4, r4, #1
|
|||
|
1801 .LVL186:
|
|||
|
1802 .L148:
|
|||
|
422:Core/Src/printf.c **** buf[len++] = '0';
|
|||
|
1803 .loc 1 422 11 is_stmt 1 view .LVU492
|
|||
|
1804 01e8 1F2C cmp r4, #31
|
|||
|
1805 01ea 03D8 bhi .L149
|
|||
|
422:Core/Src/printf.c **** buf[len++] = '0';
|
|||
|
1806 .loc 1 422 53 is_stmt 0 discriminator 1 view .LVU493
|
|||
|
1807 01ec 05F1FF3C add ip, r5, #-1
|
|||
|
1808 .LVL187:
|
|||
|
422:Core/Src/printf.c **** buf[len++] = '0';
|
|||
|
1809 .loc 1 422 44 discriminator 1 view .LVU494
|
|||
|
1810 01f0 002D cmp r5, #0
|
|||
|
1811 01f2 F1D1 bne .L150
|
|||
|
1812 .LVL188:
|
|||
|
1813 .L149:
|
|||
|
425:Core/Src/printf.c **** // add decimal
|
|||
|
1814 .loc 1 425 5 is_stmt 1 view .LVU495
|
|||
|
425:Core/Src/printf.c **** // add decimal
|
|||
|
1815 .loc 1 425 8 is_stmt 0 view .LVU496
|
|||
|
1816 01f4 1F2C cmp r4, #31
|
|||
|
1817 01f6 06D8 bhi .L152
|
|||
|
427:Core/Src/printf.c **** }
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 47
|
|||
|
|
|||
|
|
|||
|
1818 .loc 1 427 7 is_stmt 1 view .LVU497
|
|||
|
1819 .LVL189:
|
|||
|
427:Core/Src/printf.c **** }
|
|||
|
1820 .loc 1 427 18 is_stmt 0 view .LVU498
|
|||
|
1821 01f8 0EAD add r5, sp, #56
|
|||
|
1822 01fa 2544 add r5, r5, r4
|
|||
|
1823 01fc 4FF02E0C mov ip, #46
|
|||
|
1824 0200 05F820CC strb ip, [r5, #-32]
|
|||
|
427:Core/Src/printf.c **** }
|
|||
|
1825 .loc 1 427 14 view .LVU499
|
|||
|
1826 0204 0134 adds r4, r4, #1
|
|||
|
1827 .LVL190:
|
|||
|
1828 .L152:
|
|||
|
427:Core/Src/printf.c **** }
|
|||
|
1829 .loc 1 427 14 view .LVU500
|
|||
|
1830 .LBE30:
|
|||
|
432:Core/Src/printf.c **** buf[len++] = (char)(48 + (whole % 10));
|
|||
|
1831 .loc 1 432 9 is_stmt 1 view .LVU501
|
|||
|
1832 0206 1F2C cmp r4, #31
|
|||
|
1833 0208 1BD8 bhi .L151
|
|||
|
433:Core/Src/printf.c **** if (!(whole /= 10)) {
|
|||
|
1834 .loc 1 433 5 view .LVU502
|
|||
|
433:Core/Src/printf.c **** if (!(whole /= 10)) {
|
|||
|
1835 .loc 1 433 37 is_stmt 0 view .LVU503
|
|||
|
1836 020a 3D4D ldr r5, .L185+56
|
|||
|
1837 020c 85FB08C5 smull ip, r5, r5, r8
|
|||
|
1838 0210 4FEAE87C asr ip, r8, #31
|
|||
|
1839 0214 CCEBA50C rsb ip, ip, r5, asr #2
|
|||
|
1840 0218 6546 mov r5, ip
|
|||
|
1841 021a 0CEB8C0C add ip, ip, ip, lsl #2
|
|||
|
1842 021e A8EB4C0C sub ip, r8, ip, lsl #1
|
|||
|
433:Core/Src/printf.c **** if (!(whole /= 10)) {
|
|||
|
1843 .loc 1 433 12 view .LVU504
|
|||
|
1844 0222 04F10109 add r9, r4, #1
|
|||
|
1845 .LVL191:
|
|||
|
433:Core/Src/printf.c **** if (!(whole /= 10)) {
|
|||
|
1846 .loc 1 433 18 view .LVU505
|
|||
|
1847 0226 0CF1300C add ip, ip, #48
|
|||
|
433:Core/Src/printf.c **** if (!(whole /= 10)) {
|
|||
|
1848 .loc 1 433 16 view .LVU506
|
|||
|
1849 022a 0DF13808 add r8, sp, #56
|
|||
|
1850 .LVL192:
|
|||
|
433:Core/Src/printf.c **** if (!(whole /= 10)) {
|
|||
|
1851 .loc 1 433 16 view .LVU507
|
|||
|
1852 022e 4444 add r4, r4, r8
|
|||
|
1853 0230 04F820CC strb ip, [r4, #-32]
|
|||
|
434:Core/Src/printf.c **** break;
|
|||
|
1854 .loc 1 434 5 is_stmt 1 view .LVU508
|
|||
|
434:Core/Src/printf.c **** break;
|
|||
|
1855 .loc 1 434 17 is_stmt 0 view .LVU509
|
|||
|
1856 0234 A846 mov r8, r5
|
|||
|
1857 .LVL193:
|
|||
|
434:Core/Src/printf.c **** break;
|
|||
|
1858 .loc 1 434 8 view .LVU510
|
|||
|
1859 0236 1DB1 cbz r5, .L167
|
|||
|
433:Core/Src/printf.c **** if (!(whole /= 10)) {
|
|||
|
1860 .loc 1 433 12 view .LVU511
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 48
|
|||
|
|
|||
|
|
|||
|
1861 0238 4C46 mov r4, r9
|
|||
|
1862 023a E4E7 b .L152
|
|||
|
1863 .LVL194:
|
|||
|
1864 .L166:
|
|||
|
1865 .LBB31:
|
|||
|
416:Core/Src/printf.c **** if (!(frac /= 10U)) {
|
|||
|
1866 .loc 1 416 14 view .LVU512
|
|||
|
1867 023c 5446 mov r4, r10
|
|||
|
1868 023e D3E7 b .L148
|
|||
|
1869 .LVL195:
|
|||
|
1870 .L167:
|
|||
|
416:Core/Src/printf.c **** if (!(frac /= 10U)) {
|
|||
|
1871 .loc 1 416 14 view .LVU513
|
|||
|
1872 .LBE31:
|
|||
|
433:Core/Src/printf.c **** if (!(whole /= 10)) {
|
|||
|
1873 .loc 1 433 12 view .LVU514
|
|||
|
1874 0240 4C46 mov r4, r9
|
|||
|
1875 .LVL196:
|
|||
|
1876 .L151:
|
|||
|
440:Core/Src/printf.c **** if (width && (negative || (flags & (FLAGS_PLUS | FLAGS_SPACE)))) {
|
|||
|
1877 .loc 1 440 3 is_stmt 1 view .LVU515
|
|||
|
440:Core/Src/printf.c **** if (width && (negative || (flags & (FLAGS_PLUS | FLAGS_SPACE)))) {
|
|||
|
1878 .loc 1 440 29 is_stmt 0 view .LVU516
|
|||
|
1879 0242 06F00305 and r5, r6, #3
|
|||
|
440:Core/Src/printf.c **** if (width && (negative || (flags & (FLAGS_PLUS | FLAGS_SPACE)))) {
|
|||
|
1880 .loc 1 440 6 view .LVU517
|
|||
|
1881 0246 012D cmp r5, #1
|
|||
|
1882 0248 14D0 beq .L184
|
|||
|
1883 .LVL197:
|
|||
|
1884 .L154:
|
|||
|
449:Core/Src/printf.c **** if (negative) {
|
|||
|
1885 .loc 1 449 3 is_stmt 1 view .LVU518
|
|||
|
449:Core/Src/printf.c **** if (negative) {
|
|||
|
1886 .loc 1 449 6 is_stmt 0 view .LVU519
|
|||
|
1887 024a 1F2C cmp r4, #31
|
|||
|
1888 024c 08D8 bhi .L159
|
|||
|
450:Core/Src/printf.c **** buf[len++] = '-';
|
|||
|
1889 .loc 1 450 5 is_stmt 1 view .LVU520
|
|||
|
450:Core/Src/printf.c **** buf[len++] = '-';
|
|||
|
1890 .loc 1 450 8 is_stmt 0 view .LVU521
|
|||
|
1891 024e 059D ldr r5, [sp, #20]
|
|||
|
1892 0250 25B3 cbz r5, .L160
|
|||
|
451:Core/Src/printf.c **** }
|
|||
|
1893 .loc 1 451 7 is_stmt 1 view .LVU522
|
|||
|
1894 .LVL198:
|
|||
|
451:Core/Src/printf.c **** }
|
|||
|
1895 .loc 1 451 18 is_stmt 0 view .LVU523
|
|||
|
1896 0252 0EAD add r5, sp, #56
|
|||
|
1897 0254 2544 add r5, r5, r4
|
|||
|
1898 0256 4FF02D0C mov ip, #45
|
|||
|
1899 025a 05F820CC strb ip, [r5, #-32]
|
|||
|
451:Core/Src/printf.c **** }
|
|||
|
1900 .loc 1 451 14 view .LVU524
|
|||
|
1901 025e 0134 adds r4, r4, #1
|
|||
|
1902 .LVL199:
|
|||
|
1903 .L159:
|
|||
|
461:Core/Src/printf.c **** }
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 49
|
|||
|
|
|||
|
|
|||
|
1904 .loc 1 461 3 is_stmt 1 view .LVU525
|
|||
|
461:Core/Src/printf.c **** }
|
|||
|
1905 .loc 1 461 10 is_stmt 0 view .LVU526
|
|||
|
1906 0260 0396 str r6, [sp, #12]
|
|||
|
1907 0262 0297 str r7, [sp, #8]
|
|||
|
1908 0264 0194 str r4, [sp, #4]
|
|||
|
1909 0266 06AC add r4, sp, #24
|
|||
|
1910 .LVL200:
|
|||
|
461:Core/Src/printf.c **** }
|
|||
|
1911 .loc 1 461 10 view .LVU527
|
|||
|
1912 0268 0094 str r4, [sp]
|
|||
|
1913 026a FFF7FEFF bl _out_rev
|
|||
|
1914 .LVL201:
|
|||
|
1915 .L118:
|
|||
|
462:Core/Src/printf.c ****
|
|||
|
1916 .loc 1 462 1 view .LVU528
|
|||
|
1917 026e 0FB0 add sp, sp, #60
|
|||
|
1918 .LCFI22:
|
|||
|
1919 .cfi_remember_state
|
|||
|
1920 .cfi_def_cfa_offset 36
|
|||
|
1921 @ sp needed
|
|||
|
1922 0270 BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|||
|
1923 .LVL202:
|
|||
|
1924 .L184:
|
|||
|
1925 .LCFI23:
|
|||
|
1926 .cfi_restore_state
|
|||
|
441:Core/Src/printf.c **** width--;
|
|||
|
1927 .loc 1 441 5 is_stmt 1 view .LVU529
|
|||
|
441:Core/Src/printf.c **** width--;
|
|||
|
1928 .loc 1 441 8 is_stmt 0 view .LVU530
|
|||
|
1929 0274 6FB1 cbz r7, .L157
|
|||
|
441:Core/Src/printf.c **** width--;
|
|||
|
1930 .loc 1 441 15 discriminator 1 view .LVU531
|
|||
|
1931 0276 059D ldr r5, [sp, #20]
|
|||
|
1932 0278 15B9 cbnz r5, .L156
|
|||
|
441:Core/Src/printf.c **** width--;
|
|||
|
1933 .loc 1 441 28 discriminator 2 view .LVU532
|
|||
|
1934 027a 16F00C0F tst r6, #12
|
|||
|
1935 027e 08D0 beq .L157
|
|||
|
1936 .L156:
|
|||
|
442:Core/Src/printf.c **** }
|
|||
|
1937 .loc 1 442 7 is_stmt 1 view .LVU533
|
|||
|
442:Core/Src/printf.c **** }
|
|||
|
1938 .loc 1 442 12 is_stmt 0 view .LVU534
|
|||
|
1939 0280 013F subs r7, r7, #1
|
|||
|
1940 .LVL203:
|
|||
|
442:Core/Src/printf.c **** }
|
|||
|
1941 .loc 1 442 12 view .LVU535
|
|||
|
1942 0282 06E0 b .L157
|
|||
|
1943 .L158:
|
|||
|
445:Core/Src/printf.c **** }
|
|||
|
1944 .loc 1 445 7 is_stmt 1 view .LVU536
|
|||
|
1945 .LVL204:
|
|||
|
445:Core/Src/printf.c **** }
|
|||
|
1946 .loc 1 445 18 is_stmt 0 view .LVU537
|
|||
|
1947 0284 0EAD add r5, sp, #56
|
|||
|
1948 0286 2544 add r5, r5, r4
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 50
|
|||
|
|
|||
|
|
|||
|
1949 0288 4FF0300C mov ip, #48
|
|||
|
1950 028c 05F820CC strb ip, [r5, #-32]
|
|||
|
445:Core/Src/printf.c **** }
|
|||
|
1951 .loc 1 445 14 view .LVU538
|
|||
|
1952 0290 0134 adds r4, r4, #1
|
|||
|
1953 .LVL205:
|
|||
|
1954 .L157:
|
|||
|
444:Core/Src/printf.c **** buf[len++] = '0';
|
|||
|
1955 .loc 1 444 11 is_stmt 1 view .LVU539
|
|||
|
1956 0292 1F2C cmp r4, #31
|
|||
|
1957 0294 98BF it ls
|
|||
|
1958 0296 BC42 cmpls r4, r7
|
|||
|
1959 0298 F4D3 bcc .L158
|
|||
|
444:Core/Src/printf.c **** buf[len++] = '0';
|
|||
|
1960 .loc 1 444 11 is_stmt 0 view .LVU540
|
|||
|
1961 029a D6E7 b .L154
|
|||
|
1962 .L160:
|
|||
|
453:Core/Src/printf.c **** buf[len++] = '+'; // ignore the space if the '+' exists
|
|||
|
1963 .loc 1 453 10 is_stmt 1 view .LVU541
|
|||
|
453:Core/Src/printf.c **** buf[len++] = '+'; // ignore the space if the '+' exists
|
|||
|
1964 .loc 1 453 13 is_stmt 0 view .LVU542
|
|||
|
1965 029c 16F0040F tst r6, #4
|
|||
|
1966 02a0 07D0 beq .L161
|
|||
|
454:Core/Src/printf.c **** }
|
|||
|
1967 .loc 1 454 7 is_stmt 1 view .LVU543
|
|||
|
1968 .LVL206:
|
|||
|
454:Core/Src/printf.c **** }
|
|||
|
1969 .loc 1 454 18 is_stmt 0 view .LVU544
|
|||
|
1970 02a2 0EAD add r5, sp, #56
|
|||
|
1971 02a4 2544 add r5, r5, r4
|
|||
|
1972 02a6 4FF02B0C mov ip, #43
|
|||
|
1973 02aa 05F820CC strb ip, [r5, #-32]
|
|||
|
454:Core/Src/printf.c **** }
|
|||
|
1974 .loc 1 454 14 view .LVU545
|
|||
|
1975 02ae 0134 adds r4, r4, #1
|
|||
|
1976 .LVL207:
|
|||
|
454:Core/Src/printf.c **** }
|
|||
|
1977 .loc 1 454 14 view .LVU546
|
|||
|
1978 02b0 D6E7 b .L159
|
|||
|
1979 .L161:
|
|||
|
456:Core/Src/printf.c **** buf[len++] = ' ';
|
|||
|
1980 .loc 1 456 10 is_stmt 1 view .LVU547
|
|||
|
456:Core/Src/printf.c **** buf[len++] = ' ';
|
|||
|
1981 .loc 1 456 13 is_stmt 0 view .LVU548
|
|||
|
1982 02b2 16F0080F tst r6, #8
|
|||
|
1983 02b6 D3D0 beq .L159
|
|||
|
457:Core/Src/printf.c **** }
|
|||
|
1984 .loc 1 457 7 is_stmt 1 view .LVU549
|
|||
|
1985 .LVL208:
|
|||
|
457:Core/Src/printf.c **** }
|
|||
|
1986 .loc 1 457 18 is_stmt 0 view .LVU550
|
|||
|
1987 02b8 0EAD add r5, sp, #56
|
|||
|
1988 02ba 2544 add r5, r5, r4
|
|||
|
1989 02bc 4FF0200C mov ip, #32
|
|||
|
1990 02c0 05F820CC strb ip, [r5, #-32]
|
|||
|
457:Core/Src/printf.c **** }
|
|||
|
1991 .loc 1 457 14 view .LVU551
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 51
|
|||
|
|
|||
|
|
|||
|
1992 02c4 0134 adds r4, r4, #1
|
|||
|
1993 .LVL209:
|
|||
|
457:Core/Src/printf.c **** }
|
|||
|
1994 .loc 1 457 14 view .LVU552
|
|||
|
1995 02c6 CBE7 b .L159
|
|||
|
1996 .L186:
|
|||
|
1997 .align 3
|
|||
|
1998 .L185:
|
|||
|
1999 02c8 FFFFFFFF .word -1
|
|||
|
2000 02cc FFFFEFFF .word -1048577
|
|||
|
2001 02d0 FFFFFFFF .word -1
|
|||
|
2002 02d4 FFFFEF7F .word 2146435071
|
|||
|
2003 02d8 00000000 .word 0
|
|||
|
2004 02dc 65CDCD41 .word 1104006501
|
|||
|
2005 02e0 00000000 .word 0
|
|||
|
2006 02e4 65CDCDC1 .word -1043477147
|
|||
|
2007 02e8 00000000 .word 0
|
|||
|
2008 02ec 00000000 .word 0
|
|||
|
2009 02f0 0C000000 .word .LC2
|
|||
|
2010 02f4 10000000 .word .LC3
|
|||
|
2011 02f8 04000000 .word .LC1
|
|||
|
2012 02fc 00000000 .word .LC0
|
|||
|
2013 0300 67666666 .word 1717986919
|
|||
|
2014 0304 00000000 .word .LANCHOR0
|
|||
|
2015 0308 CDCCCCCC .word -858993459
|
|||
|
2016 .cfi_endproc
|
|||
|
2017 .LFE11:
|
|||
|
2019 .section .text._vsnprintf,"ax",%progbits
|
|||
|
2020 .align 1
|
|||
|
2021 .syntax unified
|
|||
|
2022 .thumb
|
|||
|
2023 .thumb_func
|
|||
|
2024 .fpu fpv5-d16
|
|||
|
2026 _vsnprintf:
|
|||
|
2027 .LVL210:
|
|||
|
2028 .LFB13:
|
|||
|
572:Core/Src/printf.c **** #endif // PRINTF_SUPPORT_EXPONENTIAL
|
|||
|
573:Core/Src/printf.c **** #endif // PRINTF_SUPPORT_FLOAT
|
|||
|
574:Core/Src/printf.c ****
|
|||
|
575:Core/Src/printf.c ****
|
|||
|
576:Core/Src/printf.c **** // internal vsnprintf
|
|||
|
577:Core/Src/printf.c **** static int _vsnprintf(out_fct_type out, char* buffer, const size_t maxlen, const char* format, va_l
|
|||
|
578:Core/Src/printf.c **** {
|
|||
|
2029 .loc 1 578 1 is_stmt 1 view -0
|
|||
|
2030 .cfi_startproc
|
|||
|
2031 @ args = 4, pretend = 0, frame = 16
|
|||
|
2032 @ frame_needed = 0, uses_anonymous_args = 0
|
|||
|
2033 .loc 1 578 1 is_stmt 0 view .LVU554
|
|||
|
2034 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|||
|
2035 .LCFI24:
|
|||
|
2036 .cfi_def_cfa_offset 36
|
|||
|
2037 .cfi_offset 4, -36
|
|||
|
2038 .cfi_offset 5, -32
|
|||
|
2039 .cfi_offset 6, -28
|
|||
|
2040 .cfi_offset 7, -24
|
|||
|
2041 .cfi_offset 8, -20
|
|||
|
2042 .cfi_offset 9, -16
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 52
|
|||
|
|
|||
|
|
|||
|
2043 .cfi_offset 10, -12
|
|||
|
2044 .cfi_offset 11, -8
|
|||
|
2045 .cfi_offset 14, -4
|
|||
|
2046 0004 8FB0 sub sp, sp, #60
|
|||
|
2047 .LCFI25:
|
|||
|
2048 .cfi_def_cfa_offset 96
|
|||
|
2049 0006 0746 mov r7, r0
|
|||
|
2050 0008 1646 mov r6, r2
|
|||
|
2051 000a 0D93 str r3, [sp, #52]
|
|||
|
579:Core/Src/printf.c **** unsigned int flags, width, precision, n;
|
|||
|
2052 .loc 1 579 3 is_stmt 1 view .LVU555
|
|||
|
580:Core/Src/printf.c **** size_t idx = 0U;
|
|||
|
2053 .loc 1 580 3 view .LVU556
|
|||
|
2054 .LVL211:
|
|||
|
581:Core/Src/printf.c ****
|
|||
|
582:Core/Src/printf.c **** if (!buffer) {
|
|||
|
2055 .loc 1 582 3 view .LVU557
|
|||
|
2056 .loc 1 582 6 is_stmt 0 view .LVU558
|
|||
|
2057 000c 8846 mov r8, r1
|
|||
|
2058 000e 0029 cmp r1, #0
|
|||
|
2059 0010 00F02283 beq .L283
|
|||
|
2060 .L188:
|
|||
|
2061 .LVL212:
|
|||
|
2062 .LBB32:
|
|||
|
583:Core/Src/printf.c **** // use null output function
|
|||
|
584:Core/Src/printf.c **** out = _out_null;
|
|||
|
585:Core/Src/printf.c **** }
|
|||
|
586:Core/Src/printf.c ****
|
|||
|
587:Core/Src/printf.c **** while (*format)
|
|||
|
588:Core/Src/printf.c **** {
|
|||
|
589:Core/Src/printf.c **** // format specifier? %[flags][width][.precision][length]
|
|||
|
590:Core/Src/printf.c **** if (*format != '%') {
|
|||
|
591:Core/Src/printf.c **** // no
|
|||
|
592:Core/Src/printf.c **** out(*format, buffer, idx++, maxlen);
|
|||
|
593:Core/Src/printf.c **** format++;
|
|||
|
594:Core/Src/printf.c **** continue;
|
|||
|
595:Core/Src/printf.c **** }
|
|||
|
596:Core/Src/printf.c **** else {
|
|||
|
597:Core/Src/printf.c **** // yes, evaluate it
|
|||
|
598:Core/Src/printf.c **** format++;
|
|||
|
599:Core/Src/printf.c **** }
|
|||
|
600:Core/Src/printf.c ****
|
|||
|
601:Core/Src/printf.c **** // evaluate flags
|
|||
|
602:Core/Src/printf.c **** flags = 0U;
|
|||
|
603:Core/Src/printf.c **** do {
|
|||
|
604:Core/Src/printf.c **** switch (*format) {
|
|||
|
605:Core/Src/printf.c **** case '0': flags |= FLAGS_ZEROPAD; format++; n = 1U; break;
|
|||
|
606:Core/Src/printf.c **** case '-': flags |= FLAGS_LEFT; format++; n = 1U; break;
|
|||
|
607:Core/Src/printf.c **** case '+': flags |= FLAGS_PLUS; format++; n = 1U; break;
|
|||
|
608:Core/Src/printf.c **** case ' ': flags |= FLAGS_SPACE; format++; n = 1U; break;
|
|||
|
609:Core/Src/printf.c **** case '#': flags |= FLAGS_HASH; format++; n = 1U; break;
|
|||
|
610:Core/Src/printf.c **** default : n = 0U; break;
|
|||
|
611:Core/Src/printf.c **** }
|
|||
|
612:Core/Src/printf.c **** } while (n);
|
|||
|
613:Core/Src/printf.c ****
|
|||
|
614:Core/Src/printf.c **** // evaluate width field
|
|||
|
615:Core/Src/printf.c **** width = 0U;
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 53
|
|||
|
|
|||
|
|
|||
|
616:Core/Src/printf.c **** if (_is_digit(*format)) {
|
|||
|
617:Core/Src/printf.c **** width = _atoi(&format);
|
|||
|
618:Core/Src/printf.c **** }
|
|||
|
619:Core/Src/printf.c **** else if (*format == '*') {
|
|||
|
620:Core/Src/printf.c **** const int w = va_arg(va, int);
|
|||
|
621:Core/Src/printf.c **** if (w < 0) {
|
|||
|
622:Core/Src/printf.c **** flags |= FLAGS_LEFT; // reverse padding
|
|||
|
623:Core/Src/printf.c **** width = (unsigned int)-w;
|
|||
|
624:Core/Src/printf.c **** }
|
|||
|
625:Core/Src/printf.c **** else {
|
|||
|
626:Core/Src/printf.c **** width = (unsigned int)w;
|
|||
|
627:Core/Src/printf.c **** }
|
|||
|
628:Core/Src/printf.c **** format++;
|
|||
|
629:Core/Src/printf.c **** }
|
|||
|
630:Core/Src/printf.c ****
|
|||
|
631:Core/Src/printf.c **** // evaluate precision field
|
|||
|
632:Core/Src/printf.c **** precision = 0U;
|
|||
|
633:Core/Src/printf.c **** if (*format == '.') {
|
|||
|
634:Core/Src/printf.c **** flags |= FLAGS_PRECISION;
|
|||
|
635:Core/Src/printf.c **** format++;
|
|||
|
636:Core/Src/printf.c **** if (_is_digit(*format)) {
|
|||
|
637:Core/Src/printf.c **** precision = _atoi(&format);
|
|||
|
638:Core/Src/printf.c **** }
|
|||
|
639:Core/Src/printf.c **** else if (*format == '*') {
|
|||
|
640:Core/Src/printf.c **** const int prec = (int)va_arg(va, int);
|
|||
|
641:Core/Src/printf.c **** precision = prec > 0 ? (unsigned int)prec : 0U;
|
|||
|
642:Core/Src/printf.c **** format++;
|
|||
|
643:Core/Src/printf.c **** }
|
|||
|
644:Core/Src/printf.c **** }
|
|||
|
645:Core/Src/printf.c ****
|
|||
|
646:Core/Src/printf.c **** // evaluate length field
|
|||
|
647:Core/Src/printf.c **** switch (*format) {
|
|||
|
648:Core/Src/printf.c **** case 'l' :
|
|||
|
649:Core/Src/printf.c **** flags |= FLAGS_LONG;
|
|||
|
650:Core/Src/printf.c **** format++;
|
|||
|
651:Core/Src/printf.c **** if (*format == 'l') {
|
|||
|
652:Core/Src/printf.c **** flags |= FLAGS_LONG_LONG;
|
|||
|
653:Core/Src/printf.c **** format++;
|
|||
|
654:Core/Src/printf.c **** }
|
|||
|
655:Core/Src/printf.c **** break;
|
|||
|
656:Core/Src/printf.c **** case 'h' :
|
|||
|
657:Core/Src/printf.c **** flags |= FLAGS_SHORT;
|
|||
|
658:Core/Src/printf.c **** format++;
|
|||
|
659:Core/Src/printf.c **** if (*format == 'h') {
|
|||
|
660:Core/Src/printf.c **** flags |= FLAGS_CHAR;
|
|||
|
661:Core/Src/printf.c **** format++;
|
|||
|
662:Core/Src/printf.c **** }
|
|||
|
663:Core/Src/printf.c **** break;
|
|||
|
664:Core/Src/printf.c **** #if defined(PRINTF_SUPPORT_PTRDIFF_T)
|
|||
|
665:Core/Src/printf.c **** case 't' :
|
|||
|
666:Core/Src/printf.c **** flags |= (sizeof(ptrdiff_t) == sizeof(long) ? FLAGS_LONG : FLAGS_LONG_LONG);
|
|||
|
667:Core/Src/printf.c **** format++;
|
|||
|
668:Core/Src/printf.c **** break;
|
|||
|
669:Core/Src/printf.c **** #endif
|
|||
|
670:Core/Src/printf.c **** case 'j' :
|
|||
|
671:Core/Src/printf.c **** flags |= (sizeof(intmax_t) == sizeof(long) ? FLAGS_LONG : FLAGS_LONG_LONG);
|
|||
|
672:Core/Src/printf.c **** format++;
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 54
|
|||
|
|
|||
|
|
|||
|
673:Core/Src/printf.c **** break;
|
|||
|
674:Core/Src/printf.c **** case 'z' :
|
|||
|
675:Core/Src/printf.c **** flags |= (sizeof(size_t) == sizeof(long) ? FLAGS_LONG : FLAGS_LONG_LONG);
|
|||
|
676:Core/Src/printf.c **** format++;
|
|||
|
677:Core/Src/printf.c **** break;
|
|||
|
678:Core/Src/printf.c **** default :
|
|||
|
679:Core/Src/printf.c **** break;
|
|||
|
680:Core/Src/printf.c **** }
|
|||
|
681:Core/Src/printf.c ****
|
|||
|
682:Core/Src/printf.c **** // evaluate specifier
|
|||
|
683:Core/Src/printf.c **** switch (*format) {
|
|||
|
684:Core/Src/printf.c **** case 'd' :
|
|||
|
685:Core/Src/printf.c **** case 'i' :
|
|||
|
686:Core/Src/printf.c **** case 'u' :
|
|||
|
687:Core/Src/printf.c **** case 'x' :
|
|||
|
688:Core/Src/printf.c **** case 'X' :
|
|||
|
689:Core/Src/printf.c **** case 'o' :
|
|||
|
690:Core/Src/printf.c **** case 'b' : {
|
|||
|
691:Core/Src/printf.c **** // set the base
|
|||
|
692:Core/Src/printf.c **** unsigned int base;
|
|||
|
693:Core/Src/printf.c **** if (*format == 'x' || *format == 'X') {
|
|||
|
694:Core/Src/printf.c **** base = 16U;
|
|||
|
695:Core/Src/printf.c **** }
|
|||
|
696:Core/Src/printf.c **** else if (*format == 'o') {
|
|||
|
697:Core/Src/printf.c **** base = 8U;
|
|||
|
698:Core/Src/printf.c **** }
|
|||
|
699:Core/Src/printf.c **** else if (*format == 'b') {
|
|||
|
700:Core/Src/printf.c **** base = 2U;
|
|||
|
701:Core/Src/printf.c **** }
|
|||
|
702:Core/Src/printf.c **** else {
|
|||
|
703:Core/Src/printf.c **** base = 10U;
|
|||
|
704:Core/Src/printf.c **** flags &= ~FLAGS_HASH; // no hash for dec format
|
|||
|
705:Core/Src/printf.c **** }
|
|||
|
706:Core/Src/printf.c **** // uppercase
|
|||
|
707:Core/Src/printf.c **** if (*format == 'X') {
|
|||
|
708:Core/Src/printf.c **** flags |= FLAGS_UPPERCASE;
|
|||
|
709:Core/Src/printf.c **** }
|
|||
|
710:Core/Src/printf.c ****
|
|||
|
711:Core/Src/printf.c **** // no plus or space flag for u, x, X, o, b
|
|||
|
712:Core/Src/printf.c **** if ((*format != 'i') && (*format != 'd')) {
|
|||
|
713:Core/Src/printf.c **** flags &= ~(FLAGS_PLUS | FLAGS_SPACE);
|
|||
|
714:Core/Src/printf.c **** }
|
|||
|
715:Core/Src/printf.c ****
|
|||
|
716:Core/Src/printf.c **** // ignore '0' flag when precision is given
|
|||
|
717:Core/Src/printf.c **** if (flags & FLAGS_PRECISION) {
|
|||
|
718:Core/Src/printf.c **** flags &= ~FLAGS_ZEROPAD;
|
|||
|
719:Core/Src/printf.c **** }
|
|||
|
720:Core/Src/printf.c ****
|
|||
|
721:Core/Src/printf.c **** // convert the integer
|
|||
|
722:Core/Src/printf.c **** if ((*format == 'i') || (*format == 'd')) {
|
|||
|
723:Core/Src/printf.c **** // signed
|
|||
|
724:Core/Src/printf.c **** if (flags & FLAGS_LONG_LONG) {
|
|||
|
725:Core/Src/printf.c **** #if defined(PRINTF_SUPPORT_LONG_LONG)
|
|||
|
726:Core/Src/printf.c **** const long long value = va_arg(va, long long);
|
|||
|
727:Core/Src/printf.c **** idx = _ntoa_long_long(out, buffer, idx, maxlen, (unsigned long long)(value > 0 ? value
|
|||
|
728:Core/Src/printf.c **** #endif
|
|||
|
729:Core/Src/printf.c **** }
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 55
|
|||
|
|
|||
|
|
|||
|
730:Core/Src/printf.c **** else if (flags & FLAGS_LONG) {
|
|||
|
731:Core/Src/printf.c **** const long value = va_arg(va, long);
|
|||
|
732:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned long)(value > 0 ? value : 0 - valu
|
|||
|
733:Core/Src/printf.c **** }
|
|||
|
734:Core/Src/printf.c **** else {
|
|||
|
735:Core/Src/printf.c **** const int value = (flags & FLAGS_CHAR) ? (char)va_arg(va, int) : (flags & FLAGS_SHORT)
|
|||
|
736:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned int)(value > 0 ? value : 0 - value
|
|||
|
737:Core/Src/printf.c **** }
|
|||
|
738:Core/Src/printf.c **** }
|
|||
|
739:Core/Src/printf.c **** else {
|
|||
|
740:Core/Src/printf.c **** // unsigned
|
|||
|
741:Core/Src/printf.c **** if (flags & FLAGS_LONG_LONG) {
|
|||
|
742:Core/Src/printf.c **** #if defined(PRINTF_SUPPORT_LONG_LONG)
|
|||
|
743:Core/Src/printf.c **** idx = _ntoa_long_long(out, buffer, idx, maxlen, va_arg(va, unsigned long long), false,
|
|||
|
744:Core/Src/printf.c **** #endif
|
|||
|
745:Core/Src/printf.c **** }
|
|||
|
746:Core/Src/printf.c **** else if (flags & FLAGS_LONG) {
|
|||
|
747:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, va_arg(va, unsigned long), false, base, prec
|
|||
|
748:Core/Src/printf.c **** }
|
|||
|
749:Core/Src/printf.c **** else {
|
|||
|
750:Core/Src/printf.c **** const unsigned int value = (flags & FLAGS_CHAR) ? (unsigned char)va_arg(va, unsigned in
|
|||
|
751:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, value, false, base, precision, width, flags)
|
|||
|
752:Core/Src/printf.c **** }
|
|||
|
753:Core/Src/printf.c **** }
|
|||
|
754:Core/Src/printf.c **** format++;
|
|||
|
755:Core/Src/printf.c **** break;
|
|||
|
756:Core/Src/printf.c **** }
|
|||
|
757:Core/Src/printf.c **** #if defined(PRINTF_SUPPORT_FLOAT)
|
|||
|
758:Core/Src/printf.c **** case 'f' :
|
|||
|
759:Core/Src/printf.c **** case 'F' :
|
|||
|
760:Core/Src/printf.c **** if (*format == 'F') flags |= FLAGS_UPPERCASE;
|
|||
|
761:Core/Src/printf.c **** idx = _ftoa(out, buffer, idx, maxlen, va_arg(va, double), precision, width, flags);
|
|||
|
762:Core/Src/printf.c **** format++;
|
|||
|
763:Core/Src/printf.c **** break;
|
|||
|
764:Core/Src/printf.c **** #if defined(PRINTF_SUPPORT_EXPONENTIAL)
|
|||
|
765:Core/Src/printf.c **** case 'e':
|
|||
|
766:Core/Src/printf.c **** case 'E':
|
|||
|
767:Core/Src/printf.c **** case 'g':
|
|||
|
768:Core/Src/printf.c **** case 'G':
|
|||
|
769:Core/Src/printf.c **** if ((*format == 'g')||(*format == 'G')) flags |= FLAGS_ADAPT_EXP;
|
|||
|
770:Core/Src/printf.c **** if ((*format == 'E')||(*format == 'G')) flags |= FLAGS_UPPERCASE;
|
|||
|
771:Core/Src/printf.c **** idx = _etoa(out, buffer, idx, maxlen, va_arg(va, double), precision, width, flags);
|
|||
|
772:Core/Src/printf.c **** format++;
|
|||
|
773:Core/Src/printf.c **** break;
|
|||
|
774:Core/Src/printf.c **** #endif // PRINTF_SUPPORT_EXPONENTIAL
|
|||
|
775:Core/Src/printf.c **** #endif // PRINTF_SUPPORT_FLOAT
|
|||
|
776:Core/Src/printf.c **** case 'c' : {
|
|||
|
777:Core/Src/printf.c **** unsigned int l = 1U;
|
|||
|
778:Core/Src/printf.c **** // pre padding
|
|||
|
779:Core/Src/printf.c **** if (!(flags & FLAGS_LEFT)) {
|
|||
|
780:Core/Src/printf.c **** while (l++ < width) {
|
|||
|
781:Core/Src/printf.c **** out(' ', buffer, idx++, maxlen);
|
|||
|
782:Core/Src/printf.c **** }
|
|||
|
783:Core/Src/printf.c **** }
|
|||
|
784:Core/Src/printf.c **** // char output
|
|||
|
785:Core/Src/printf.c **** out((char)va_arg(va, int), buffer, idx++, maxlen);
|
|||
|
786:Core/Src/printf.c **** // post padding
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 56
|
|||
|
|
|||
|
|
|||
|
787:Core/Src/printf.c **** if (flags & FLAGS_LEFT) {
|
|||
|
788:Core/Src/printf.c **** while (l++ < width) {
|
|||
|
789:Core/Src/printf.c **** out(' ', buffer, idx++, maxlen);
|
|||
|
790:Core/Src/printf.c **** }
|
|||
|
791:Core/Src/printf.c **** }
|
|||
|
792:Core/Src/printf.c **** format++;
|
|||
|
793:Core/Src/printf.c **** break;
|
|||
|
2063 .loc 1 793 9 view .LVU559
|
|||
|
2064 0014 0024 movs r4, #0
|
|||
|
2065 .LVL213:
|
|||
|
2066 .L265:
|
|||
|
2067 .loc 1 793 9 view .LVU560
|
|||
|
2068 .LBE32:
|
|||
|
587:Core/Src/printf.c **** {
|
|||
|
2069 .loc 1 587 9 is_stmt 1 view .LVU561
|
|||
|
587:Core/Src/printf.c **** {
|
|||
|
2070 .loc 1 587 10 is_stmt 0 view .LVU562
|
|||
|
2071 0016 0D9B ldr r3, [sp, #52]
|
|||
|
2072 0018 1878 ldrb r0, [r3] @ zero_extendqisi2
|
|||
|
587:Core/Src/printf.c **** {
|
|||
|
2073 .loc 1 587 9 view .LVU563
|
|||
|
2074 001a 0028 cmp r0, #0
|
|||
|
2075 001c 00F01E83 beq .L284
|
|||
|
590:Core/Src/printf.c **** // no
|
|||
|
2076 .loc 1 590 5 is_stmt 1 view .LVU564
|
|||
|
590:Core/Src/printf.c **** // no
|
|||
|
2077 .loc 1 590 8 is_stmt 0 view .LVU565
|
|||
|
2078 0020 2528 cmp r0, #37
|
|||
|
2079 0022 09D0 beq .L190
|
|||
|
592:Core/Src/printf.c **** format++;
|
|||
|
2080 .loc 1 592 7 is_stmt 1 view .LVU566
|
|||
|
2081 0024 651C adds r5, r4, #1
|
|||
|
2082 .LVL214:
|
|||
|
592:Core/Src/printf.c **** format++;
|
|||
|
2083 .loc 1 592 7 is_stmt 0 view .LVU567
|
|||
|
2084 0026 3346 mov r3, r6
|
|||
|
2085 0028 2246 mov r2, r4
|
|||
|
2086 002a 4146 mov r1, r8
|
|||
|
2087 002c B847 blx r7
|
|||
|
2088 .LVL215:
|
|||
|
593:Core/Src/printf.c **** continue;
|
|||
|
2089 .loc 1 593 7 is_stmt 1 view .LVU568
|
|||
|
593:Core/Src/printf.c **** continue;
|
|||
|
2090 .loc 1 593 13 is_stmt 0 view .LVU569
|
|||
|
2091 002e 0D9B ldr r3, [sp, #52]
|
|||
|
2092 0030 0133 adds r3, r3, #1
|
|||
|
2093 0032 0D93 str r3, [sp, #52]
|
|||
|
594:Core/Src/printf.c **** }
|
|||
|
2094 .loc 1 594 7 is_stmt 1 view .LVU570
|
|||
|
592:Core/Src/printf.c **** format++;
|
|||
|
2095 .loc 1 592 7 is_stmt 0 view .LVU571
|
|||
|
2096 0034 2C46 mov r4, r5
|
|||
|
594:Core/Src/printf.c **** }
|
|||
|
2097 .loc 1 594 7 view .LVU572
|
|||
|
2098 0036 EEE7 b .L265
|
|||
|
2099 .LVL216:
|
|||
|
2100 .L190:
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 57
|
|||
|
|
|||
|
|
|||
|
598:Core/Src/printf.c **** }
|
|||
|
2101 .loc 1 598 7 is_stmt 1 view .LVU573
|
|||
|
598:Core/Src/printf.c **** }
|
|||
|
2102 .loc 1 598 13 is_stmt 0 view .LVU574
|
|||
|
2103 0038 0133 adds r3, r3, #1
|
|||
|
2104 003a 0D93 str r3, [sp, #52]
|
|||
|
602:Core/Src/printf.c **** do {
|
|||
|
2105 .loc 1 602 5 is_stmt 1 view .LVU575
|
|||
|
2106 .LVL217:
|
|||
|
602:Core/Src/printf.c **** do {
|
|||
|
2107 .loc 1 602 11 is_stmt 0 view .LVU576
|
|||
|
2108 003c 0025 movs r5, #0
|
|||
|
2109 .LVL218:
|
|||
|
2110 .L192:
|
|||
|
603:Core/Src/printf.c **** switch (*format) {
|
|||
|
2111 .loc 1 603 5 is_stmt 1 view .LVU577
|
|||
|
604:Core/Src/printf.c **** case '0': flags |= FLAGS_ZEROPAD; format++; n = 1U; break;
|
|||
|
2112 .loc 1 604 7 view .LVU578
|
|||
|
604:Core/Src/printf.c **** case '0': flags |= FLAGS_ZEROPAD; format++; n = 1U; break;
|
|||
|
2113 .loc 1 604 15 is_stmt 0 view .LVU579
|
|||
|
2114 003e 0D9B ldr r3, [sp, #52]
|
|||
|
2115 0040 1978 ldrb r1, [r3] @ zero_extendqisi2
|
|||
|
2116 0042 A1F12002 sub r2, r1, #32
|
|||
|
2117 0046 102A cmp r2, #16
|
|||
|
2118 0048 0AD8 bhi .L193
|
|||
|
2119 004a DFE802F0 tbb [pc, r2]
|
|||
|
2120 .L195:
|
|||
|
2121 004e 38 .byte (.L199-.L195)/2
|
|||
|
2122 004f 09 .byte (.L193-.L195)/2
|
|||
|
2123 0050 09 .byte (.L193-.L195)/2
|
|||
|
2124 0051 3D .byte (.L198-.L195)/2
|
|||
|
2125 0052 09 .byte (.L193-.L195)/2
|
|||
|
2126 0053 09 .byte (.L193-.L195)/2
|
|||
|
2127 0054 09 .byte (.L193-.L195)/2
|
|||
|
2128 0055 09 .byte (.L193-.L195)/2
|
|||
|
2129 0056 09 .byte (.L193-.L195)/2
|
|||
|
2130 0057 09 .byte (.L193-.L195)/2
|
|||
|
2131 0058 09 .byte (.L193-.L195)/2
|
|||
|
2132 0059 33 .byte (.L197-.L195)/2
|
|||
|
2133 005a 09 .byte (.L193-.L195)/2
|
|||
|
2134 005b 2E .byte (.L196-.L195)/2
|
|||
|
2135 005c 09 .byte (.L193-.L195)/2
|
|||
|
2136 005d 09 .byte (.L193-.L195)/2
|
|||
|
2137 005e 29 .byte (.L194-.L195)/2
|
|||
|
2138 005f 00 .p2align 1
|
|||
|
2139 .L193:
|
|||
|
2140 .LVL219:
|
|||
|
612:Core/Src/printf.c ****
|
|||
|
2141 .loc 1 612 13 is_stmt 1 view .LVU580
|
|||
|
615:Core/Src/printf.c **** if (_is_digit(*format)) {
|
|||
|
2142 .loc 1 615 5 view .LVU581
|
|||
|
616:Core/Src/printf.c **** width = _atoi(&format);
|
|||
|
2143 .loc 1 616 5 view .LVU582
|
|||
|
2144 .LBB33:
|
|||
|
2145 .LBI33:
|
|||
|
181:Core/Src/printf.c **** {
|
|||
|
2146 .loc 1 181 20 view .LVU583
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 58
|
|||
|
|
|||
|
|
|||
|
2147 .LBB34:
|
|||
|
183:Core/Src/printf.c **** }
|
|||
|
2148 .loc 1 183 3 view .LVU584
|
|||
|
183:Core/Src/printf.c **** }
|
|||
|
2149 .loc 1 183 22 is_stmt 0 view .LVU585
|
|||
|
2150 0060 A1F13003 sub r3, r1, #48
|
|||
|
2151 0064 DBB2 uxtb r3, r3
|
|||
|
2152 .LVL220:
|
|||
|
183:Core/Src/printf.c **** }
|
|||
|
2153 .loc 1 183 22 view .LVU586
|
|||
|
2154 .LBE34:
|
|||
|
2155 .LBE33:
|
|||
|
616:Core/Src/printf.c **** width = _atoi(&format);
|
|||
|
2156 .loc 1 616 8 view .LVU587
|
|||
|
2157 0066 092B cmp r3, #9
|
|||
|
2158 0068 33D9 bls .L285
|
|||
|
619:Core/Src/printf.c **** const int w = va_arg(va, int);
|
|||
|
2159 .loc 1 619 10 is_stmt 1 view .LVU588
|
|||
|
619:Core/Src/printf.c **** const int w = va_arg(va, int);
|
|||
|
2160 .loc 1 619 13 is_stmt 0 view .LVU589
|
|||
|
2161 006a 2A29 cmp r1, #42
|
|||
|
2162 006c 36D0 beq .L286
|
|||
|
615:Core/Src/printf.c **** if (_is_digit(*format)) {
|
|||
|
2163 .loc 1 615 11 view .LVU590
|
|||
|
2164 006e 0023 movs r3, #0
|
|||
|
2165 0070 0A93 str r3, [sp, #40]
|
|||
|
2166 .LVL221:
|
|||
|
2167 .L203:
|
|||
|
632:Core/Src/printf.c **** if (*format == '.') {
|
|||
|
2168 .loc 1 632 5 is_stmt 1 view .LVU591
|
|||
|
633:Core/Src/printf.c **** flags |= FLAGS_PRECISION;
|
|||
|
2169 .loc 1 633 5 view .LVU592
|
|||
|
633:Core/Src/printf.c **** flags |= FLAGS_PRECISION;
|
|||
|
2170 .loc 1 633 9 is_stmt 0 view .LVU593
|
|||
|
2171 0072 0D9B ldr r3, [sp, #52]
|
|||
|
2172 0074 1A78 ldrb r2, [r3] @ zero_extendqisi2
|
|||
|
633:Core/Src/printf.c **** flags |= FLAGS_PRECISION;
|
|||
|
2173 .loc 1 633 8 view .LVU594
|
|||
|
2174 0076 2E2A cmp r2, #46
|
|||
|
2175 0078 40D0 beq .L287
|
|||
|
632:Core/Src/printf.c **** if (*format == '.') {
|
|||
|
2176 .loc 1 632 15 view .LVU595
|
|||
|
2177 007a 4FF0000B mov fp, #0
|
|||
|
2178 .LVL222:
|
|||
|
2179 .L206:
|
|||
|
647:Core/Src/printf.c **** case 'l' :
|
|||
|
2180 .loc 1 647 5 is_stmt 1 view .LVU596
|
|||
|
647:Core/Src/printf.c **** case 'l' :
|
|||
|
2181 .loc 1 647 13 is_stmt 0 view .LVU597
|
|||
|
2182 007e 0D9A ldr r2, [sp, #52]
|
|||
|
2183 0080 1378 ldrb r3, [r2] @ zero_extendqisi2
|
|||
|
2184 0082 683B subs r3, r3, #104
|
|||
|
2185 0084 122B cmp r3, #18
|
|||
|
2186 0086 77D8 bhi .L208
|
|||
|
2187 0088 DFE803F0 tbb [pc, r3]
|
|||
|
2188 .L210:
|
|||
|
2189 008c 64 .byte (.L214-.L210)/2
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 59
|
|||
|
|
|||
|
|
|||
|
2190 008d 76 .byte (.L208-.L210)/2
|
|||
|
2191 008e D3 .byte (.L213-.L210)/2
|
|||
|
2192 008f 76 .byte (.L208-.L210)/2
|
|||
|
2193 0090 56 .byte (.L212-.L210)/2
|
|||
|
2194 0091 76 .byte (.L208-.L210)/2
|
|||
|
2195 0092 76 .byte (.L208-.L210)/2
|
|||
|
2196 0093 76 .byte (.L208-.L210)/2
|
|||
|
2197 0094 76 .byte (.L208-.L210)/2
|
|||
|
2198 0095 76 .byte (.L208-.L210)/2
|
|||
|
2199 0096 76 .byte (.L208-.L210)/2
|
|||
|
2200 0097 76 .byte (.L208-.L210)/2
|
|||
|
2201 0098 72 .byte (.L211-.L210)/2
|
|||
|
2202 0099 76 .byte (.L208-.L210)/2
|
|||
|
2203 009a 76 .byte (.L208-.L210)/2
|
|||
|
2204 009b 76 .byte (.L208-.L210)/2
|
|||
|
2205 009c 76 .byte (.L208-.L210)/2
|
|||
|
2206 009d 76 .byte (.L208-.L210)/2
|
|||
|
2207 009e D8 .byte (.L209-.L210)/2
|
|||
|
2208 .LVL223:
|
|||
|
2209 009f 00 .p2align 1
|
|||
|
2210 .L194:
|
|||
|
605:Core/Src/printf.c **** case '-': flags |= FLAGS_LEFT; format++; n = 1U; break;
|
|||
|
2211 .loc 1 605 19 is_stmt 1 view .LVU598
|
|||
|
605:Core/Src/printf.c **** case '-': flags |= FLAGS_LEFT; format++; n = 1U; break;
|
|||
|
2212 .loc 1 605 25 is_stmt 0 view .LVU599
|
|||
|
2213 00a0 45F00105 orr r5, r5, #1
|
|||
|
2214 .LVL224:
|
|||
|
605:Core/Src/printf.c **** case '-': flags |= FLAGS_LEFT; format++; n = 1U; break;
|
|||
|
2215 .loc 1 605 43 is_stmt 1 view .LVU600
|
|||
|
605:Core/Src/printf.c **** case '-': flags |= FLAGS_LEFT; format++; n = 1U; break;
|
|||
|
2216 .loc 1 605 49 is_stmt 0 view .LVU601
|
|||
|
2217 00a4 0133 adds r3, r3, #1
|
|||
|
2218 00a6 0D93 str r3, [sp, #52]
|
|||
|
605:Core/Src/printf.c **** case '-': flags |= FLAGS_LEFT; format++; n = 1U; break;
|
|||
|
2219 .loc 1 605 53 is_stmt 1 view .LVU602
|
|||
|
2220 .LVL225:
|
|||
|
605:Core/Src/printf.c **** case '-': flags |= FLAGS_LEFT; format++; n = 1U; break;
|
|||
|
2221 .loc 1 605 61 view .LVU603
|
|||
|
612:Core/Src/printf.c ****
|
|||
|
2222 .loc 1 612 13 view .LVU604
|
|||
|
2223 00a8 C9E7 b .L192
|
|||
|
2224 .LVL226:
|
|||
|
2225 .L196:
|
|||
|
606:Core/Src/printf.c **** case '+': flags |= FLAGS_PLUS; format++; n = 1U; break;
|
|||
|
2226 .loc 1 606 19 view .LVU605
|
|||
|
606:Core/Src/printf.c **** case '+': flags |= FLAGS_PLUS; format++; n = 1U; break;
|
|||
|
2227 .loc 1 606 25 is_stmt 0 view .LVU606
|
|||
|
2228 00aa 45F00205 orr r5, r5, #2
|
|||
|
2229 .LVL227:
|
|||
|
606:Core/Src/printf.c **** case '+': flags |= FLAGS_PLUS; format++; n = 1U; break;
|
|||
|
2230 .loc 1 606 43 is_stmt 1 view .LVU607
|
|||
|
606:Core/Src/printf.c **** case '+': flags |= FLAGS_PLUS; format++; n = 1U; break;
|
|||
|
2231 .loc 1 606 49 is_stmt 0 view .LVU608
|
|||
|
2232 00ae 0133 adds r3, r3, #1
|
|||
|
2233 00b0 0D93 str r3, [sp, #52]
|
|||
|
606:Core/Src/printf.c **** case '+': flags |= FLAGS_PLUS; format++; n = 1U; break;
|
|||
|
2234 .loc 1 606 53 is_stmt 1 view .LVU609
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 60
|
|||
|
|
|||
|
|
|||
|
2235 .LVL228:
|
|||
|
606:Core/Src/printf.c **** case '+': flags |= FLAGS_PLUS; format++; n = 1U; break;
|
|||
|
2236 .loc 1 606 61 view .LVU610
|
|||
|
612:Core/Src/printf.c ****
|
|||
|
2237 .loc 1 612 13 view .LVU611
|
|||
|
2238 00b2 C4E7 b .L192
|
|||
|
2239 .LVL229:
|
|||
|
2240 .L197:
|
|||
|
607:Core/Src/printf.c **** case ' ': flags |= FLAGS_SPACE; format++; n = 1U; break;
|
|||
|
2241 .loc 1 607 19 view .LVU612
|
|||
|
607:Core/Src/printf.c **** case ' ': flags |= FLAGS_SPACE; format++; n = 1U; break;
|
|||
|
2242 .loc 1 607 25 is_stmt 0 view .LVU613
|
|||
|
2243 00b4 45F00405 orr r5, r5, #4
|
|||
|
2244 .LVL230:
|
|||
|
607:Core/Src/printf.c **** case ' ': flags |= FLAGS_SPACE; format++; n = 1U; break;
|
|||
|
2245 .loc 1 607 43 is_stmt 1 view .LVU614
|
|||
|
607:Core/Src/printf.c **** case ' ': flags |= FLAGS_SPACE; format++; n = 1U; break;
|
|||
|
2246 .loc 1 607 49 is_stmt 0 view .LVU615
|
|||
|
2247 00b8 0133 adds r3, r3, #1
|
|||
|
2248 00ba 0D93 str r3, [sp, #52]
|
|||
|
607:Core/Src/printf.c **** case ' ': flags |= FLAGS_SPACE; format++; n = 1U; break;
|
|||
|
2249 .loc 1 607 53 is_stmt 1 view .LVU616
|
|||
|
2250 .LVL231:
|
|||
|
607:Core/Src/printf.c **** case ' ': flags |= FLAGS_SPACE; format++; n = 1U; break;
|
|||
|
2251 .loc 1 607 61 view .LVU617
|
|||
|
612:Core/Src/printf.c ****
|
|||
|
2252 .loc 1 612 13 view .LVU618
|
|||
|
2253 00bc BFE7 b .L192
|
|||
|
2254 .LVL232:
|
|||
|
2255 .L199:
|
|||
|
608:Core/Src/printf.c **** case '#': flags |= FLAGS_HASH; format++; n = 1U; break;
|
|||
|
2256 .loc 1 608 19 view .LVU619
|
|||
|
608:Core/Src/printf.c **** case '#': flags |= FLAGS_HASH; format++; n = 1U; break;
|
|||
|
2257 .loc 1 608 25 is_stmt 0 view .LVU620
|
|||
|
2258 00be 45F00805 orr r5, r5, #8
|
|||
|
2259 .LVL233:
|
|||
|
608:Core/Src/printf.c **** case '#': flags |= FLAGS_HASH; format++; n = 1U; break;
|
|||
|
2260 .loc 1 608 43 is_stmt 1 view .LVU621
|
|||
|
608:Core/Src/printf.c **** case '#': flags |= FLAGS_HASH; format++; n = 1U; break;
|
|||
|
2261 .loc 1 608 49 is_stmt 0 view .LVU622
|
|||
|
2262 00c2 0133 adds r3, r3, #1
|
|||
|
2263 00c4 0D93 str r3, [sp, #52]
|
|||
|
608:Core/Src/printf.c **** case '#': flags |= FLAGS_HASH; format++; n = 1U; break;
|
|||
|
2264 .loc 1 608 53 is_stmt 1 view .LVU623
|
|||
|
2265 .LVL234:
|
|||
|
608:Core/Src/printf.c **** case '#': flags |= FLAGS_HASH; format++; n = 1U; break;
|
|||
|
2266 .loc 1 608 61 view .LVU624
|
|||
|
612:Core/Src/printf.c ****
|
|||
|
2267 .loc 1 612 13 view .LVU625
|
|||
|
2268 00c6 BAE7 b .L192
|
|||
|
2269 .LVL235:
|
|||
|
2270 .L198:
|
|||
|
609:Core/Src/printf.c **** default : n = 0U; break;
|
|||
|
2271 .loc 1 609 19 view .LVU626
|
|||
|
609:Core/Src/printf.c **** default : n = 0U; break;
|
|||
|
2272 .loc 1 609 25 is_stmt 0 view .LVU627
|
|||
|
2273 00c8 45F01005 orr r5, r5, #16
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 61
|
|||
|
|
|||
|
|
|||
|
2274 .LVL236:
|
|||
|
609:Core/Src/printf.c **** default : n = 0U; break;
|
|||
|
2275 .loc 1 609 43 is_stmt 1 view .LVU628
|
|||
|
609:Core/Src/printf.c **** default : n = 0U; break;
|
|||
|
2276 .loc 1 609 49 is_stmt 0 view .LVU629
|
|||
|
2277 00cc 0133 adds r3, r3, #1
|
|||
|
2278 00ce 0D93 str r3, [sp, #52]
|
|||
|
609:Core/Src/printf.c **** default : n = 0U; break;
|
|||
|
2279 .loc 1 609 53 is_stmt 1 view .LVU630
|
|||
|
2280 .LVL237:
|
|||
|
609:Core/Src/printf.c **** default : n = 0U; break;
|
|||
|
2281 .loc 1 609 61 view .LVU631
|
|||
|
612:Core/Src/printf.c ****
|
|||
|
2282 .loc 1 612 13 view .LVU632
|
|||
|
2283 00d0 B5E7 b .L192
|
|||
|
2284 .LVL238:
|
|||
|
2285 .L285:
|
|||
|
617:Core/Src/printf.c **** }
|
|||
|
2286 .loc 1 617 7 view .LVU633
|
|||
|
617:Core/Src/printf.c **** }
|
|||
|
2287 .loc 1 617 15 is_stmt 0 view .LVU634
|
|||
|
2288 00d2 0DA8 add r0, sp, #52
|
|||
|
2289 00d4 FFF7FEFF bl _atoi
|
|||
|
2290 .LVL239:
|
|||
|
2291 00d8 0A90 str r0, [sp, #40]
|
|||
|
2292 .LVL240:
|
|||
|
617:Core/Src/printf.c **** }
|
|||
|
2293 .loc 1 617 15 view .LVU635
|
|||
|
2294 00da CAE7 b .L203
|
|||
|
2295 .LVL241:
|
|||
|
2296 .L286:
|
|||
|
2297 .LBB35:
|
|||
|
620:Core/Src/printf.c **** if (w < 0) {
|
|||
|
2298 .loc 1 620 7 is_stmt 1 view .LVU636
|
|||
|
620:Core/Src/printf.c **** if (w < 0) {
|
|||
|
2299 .loc 1 620 17 is_stmt 0 view .LVU637
|
|||
|
2300 00dc 189B ldr r3, [sp, #96]
|
|||
|
2301 00de 1A1D adds r2, r3, #4
|
|||
|
2302 00e0 1892 str r2, [sp, #96]
|
|||
|
2303 00e2 1868 ldr r0, [r3]
|
|||
|
621:Core/Src/printf.c **** flags |= FLAGS_LEFT; // reverse padding
|
|||
|
2304 .loc 1 621 7 is_stmt 1 view .LVU638
|
|||
|
621:Core/Src/printf.c **** flags |= FLAGS_LEFT; // reverse padding
|
|||
|
2305 .loc 1 621 10 is_stmt 0 view .LVU639
|
|||
|
2306 00e4 0028 cmp r0, #0
|
|||
|
2307 00e6 04DB blt .L288
|
|||
|
626:Core/Src/printf.c **** }
|
|||
|
2308 .loc 1 626 9 is_stmt 1 view .LVU640
|
|||
|
626:Core/Src/printf.c **** }
|
|||
|
2309 .loc 1 626 15 is_stmt 0 view .LVU641
|
|||
|
2310 00e8 0A90 str r0, [sp, #40]
|
|||
|
2311 .LVL242:
|
|||
|
2312 .L205:
|
|||
|
628:Core/Src/printf.c **** }
|
|||
|
2313 .loc 1 628 7 is_stmt 1 view .LVU642
|
|||
|
628:Core/Src/printf.c **** }
|
|||
|
2314 .loc 1 628 13 is_stmt 0 view .LVU643
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 62
|
|||
|
|
|||
|
|
|||
|
2315 00ea 0D9B ldr r3, [sp, #52]
|
|||
|
2316 00ec 0133 adds r3, r3, #1
|
|||
|
2317 00ee 0D93 str r3, [sp, #52]
|
|||
|
2318 00f0 BFE7 b .L203
|
|||
|
2319 .LVL243:
|
|||
|
2320 .L288:
|
|||
|
622:Core/Src/printf.c **** width = (unsigned int)-w;
|
|||
|
2321 .loc 1 622 9 is_stmt 1 view .LVU644
|
|||
|
622:Core/Src/printf.c **** width = (unsigned int)-w;
|
|||
|
2322 .loc 1 622 15 is_stmt 0 view .LVU645
|
|||
|
2323 00f2 45F00205 orr r5, r5, #2
|
|||
|
2324 .LVL244:
|
|||
|
623:Core/Src/printf.c **** }
|
|||
|
2325 .loc 1 623 9 is_stmt 1 view .LVU646
|
|||
|
623:Core/Src/printf.c **** }
|
|||
|
2326 .loc 1 623 31 is_stmt 0 view .LVU647
|
|||
|
2327 00f6 4342 rsbs r3, r0, #0
|
|||
|
2328 00f8 0A93 str r3, [sp, #40]
|
|||
|
2329 .LVL245:
|
|||
|
623:Core/Src/printf.c **** }
|
|||
|
2330 .loc 1 623 31 view .LVU648
|
|||
|
2331 00fa F6E7 b .L205
|
|||
|
2332 .LVL246:
|
|||
|
2333 .L287:
|
|||
|
623:Core/Src/printf.c **** }
|
|||
|
2334 .loc 1 623 31 view .LVU649
|
|||
|
2335 .LBE35:
|
|||
|
634:Core/Src/printf.c **** format++;
|
|||
|
2336 .loc 1 634 7 is_stmt 1 view .LVU650
|
|||
|
634:Core/Src/printf.c **** format++;
|
|||
|
2337 .loc 1 634 13 is_stmt 0 view .LVU651
|
|||
|
2338 00fc 45F48065 orr r5, r5, #1024
|
|||
|
2339 .LVL247:
|
|||
|
635:Core/Src/printf.c **** if (_is_digit(*format)) {
|
|||
|
2340 .loc 1 635 7 is_stmt 1 view .LVU652
|
|||
|
635:Core/Src/printf.c **** if (_is_digit(*format)) {
|
|||
|
2341 .loc 1 635 13 is_stmt 0 view .LVU653
|
|||
|
2342 0100 5A1C adds r2, r3, #1
|
|||
|
2343 0102 0D92 str r2, [sp, #52]
|
|||
|
636:Core/Src/printf.c **** precision = _atoi(&format);
|
|||
|
2344 .loc 1 636 7 is_stmt 1 view .LVU654
|
|||
|
636:Core/Src/printf.c **** precision = _atoi(&format);
|
|||
|
2345 .loc 1 636 11 is_stmt 0 view .LVU655
|
|||
|
2346 0104 5A78 ldrb r2, [r3, #1] @ zero_extendqisi2
|
|||
|
2347 .LVL248:
|
|||
|
2348 .LBB36:
|
|||
|
2349 .LBI36:
|
|||
|
181:Core/Src/printf.c **** {
|
|||
|
2350 .loc 1 181 20 is_stmt 1 view .LVU656
|
|||
|
2351 .LBB37:
|
|||
|
183:Core/Src/printf.c **** }
|
|||
|
2352 .loc 1 183 3 view .LVU657
|
|||
|
183:Core/Src/printf.c **** }
|
|||
|
2353 .loc 1 183 22 is_stmt 0 view .LVU658
|
|||
|
2354 0106 A2F13003 sub r3, r2, #48
|
|||
|
2355 010a DBB2 uxtb r3, r3
|
|||
|
2356 .LVL249:
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 63
|
|||
|
|
|||
|
|
|||
|
183:Core/Src/printf.c **** }
|
|||
|
2357 .loc 1 183 22 view .LVU659
|
|||
|
2358 .LBE37:
|
|||
|
2359 .LBE36:
|
|||
|
636:Core/Src/printf.c **** precision = _atoi(&format);
|
|||
|
2360 .loc 1 636 10 view .LVU660
|
|||
|
2361 010c 092B cmp r3, #9
|
|||
|
2362 010e 04D9 bls .L289
|
|||
|
639:Core/Src/printf.c **** const int prec = (int)va_arg(va, int);
|
|||
|
2363 .loc 1 639 12 is_stmt 1 view .LVU661
|
|||
|
639:Core/Src/printf.c **** const int prec = (int)va_arg(va, int);
|
|||
|
2364 .loc 1 639 15 is_stmt 0 view .LVU662
|
|||
|
2365 0110 2A2A cmp r2, #42
|
|||
|
2366 0112 07D0 beq .L290
|
|||
|
632:Core/Src/printf.c **** if (*format == '.') {
|
|||
|
2367 .loc 1 632 15 view .LVU663
|
|||
|
2368 0114 4FF0000B mov fp, #0
|
|||
|
2369 0118 B1E7 b .L206
|
|||
|
2370 .L289:
|
|||
|
637:Core/Src/printf.c **** }
|
|||
|
2371 .loc 1 637 9 is_stmt 1 view .LVU664
|
|||
|
637:Core/Src/printf.c **** }
|
|||
|
2372 .loc 1 637 21 is_stmt 0 view .LVU665
|
|||
|
2373 011a 0DA8 add r0, sp, #52
|
|||
|
2374 011c FFF7FEFF bl _atoi
|
|||
|
2375 .LVL250:
|
|||
|
2376 0120 8346 mov fp, r0
|
|||
|
2377 .LVL251:
|
|||
|
637:Core/Src/printf.c **** }
|
|||
|
2378 .loc 1 637 21 view .LVU666
|
|||
|
2379 0122 ACE7 b .L206
|
|||
|
2380 .LVL252:
|
|||
|
2381 .L290:
|
|||
|
2382 .LBB38:
|
|||
|
640:Core/Src/printf.c **** precision = prec > 0 ? (unsigned int)prec : 0U;
|
|||
|
2383 .loc 1 640 9 is_stmt 1 view .LVU667
|
|||
|
640:Core/Src/printf.c **** precision = prec > 0 ? (unsigned int)prec : 0U;
|
|||
|
2384 .loc 1 640 19 is_stmt 0 view .LVU668
|
|||
|
2385 0124 189B ldr r3, [sp, #96]
|
|||
|
2386 0126 1A1D adds r2, r3, #4
|
|||
|
2387 0128 1892 str r2, [sp, #96]
|
|||
|
2388 012a 1B68 ldr r3, [r3]
|
|||
|
641:Core/Src/printf.c **** format++;
|
|||
|
2389 .loc 1 641 9 is_stmt 1 view .LVU669
|
|||
|
641:Core/Src/printf.c **** format++;
|
|||
|
2390 .loc 1 641 51 is_stmt 0 view .LVU670
|
|||
|
2391 012c 23EAE37B bic fp, r3, r3, asr #31
|
|||
|
2392 .LVL253:
|
|||
|
642:Core/Src/printf.c **** }
|
|||
|
2393 .loc 1 642 9 is_stmt 1 view .LVU671
|
|||
|
642:Core/Src/printf.c **** }
|
|||
|
2394 .loc 1 642 15 is_stmt 0 view .LVU672
|
|||
|
2395 0130 0D9B ldr r3, [sp, #52]
|
|||
|
2396 0132 0133 adds r3, r3, #1
|
|||
|
2397 0134 0D93 str r3, [sp, #52]
|
|||
|
2398 0136 A2E7 b .L206
|
|||
|
2399 .L212:
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 64
|
|||
|
|
|||
|
|
|||
|
642:Core/Src/printf.c **** }
|
|||
|
2400 .loc 1 642 15 view .LVU673
|
|||
|
2401 .LBE38:
|
|||
|
649:Core/Src/printf.c **** format++;
|
|||
|
2402 .loc 1 649 9 is_stmt 1 view .LVU674
|
|||
|
649:Core/Src/printf.c **** format++;
|
|||
|
2403 .loc 1 649 15 is_stmt 0 view .LVU675
|
|||
|
2404 0138 45F48071 orr r1, r5, #256
|
|||
|
2405 .LVL254:
|
|||
|
650:Core/Src/printf.c **** if (*format == 'l') {
|
|||
|
2406 .loc 1 650 9 is_stmt 1 view .LVU676
|
|||
|
650:Core/Src/printf.c **** if (*format == 'l') {
|
|||
|
2407 .loc 1 650 15 is_stmt 0 view .LVU677
|
|||
|
2408 013c 531C adds r3, r2, #1
|
|||
|
2409 013e 0D93 str r3, [sp, #52]
|
|||
|
651:Core/Src/printf.c **** flags |= FLAGS_LONG_LONG;
|
|||
|
2410 .loc 1 651 9 is_stmt 1 view .LVU678
|
|||
|
651:Core/Src/printf.c **** flags |= FLAGS_LONG_LONG;
|
|||
|
2411 .loc 1 651 13 is_stmt 0 view .LVU679
|
|||
|
2412 0140 5278 ldrb r2, [r2, #1] @ zero_extendqisi2
|
|||
|
651:Core/Src/printf.c **** flags |= FLAGS_LONG_LONG;
|
|||
|
2413 .loc 1 651 12 view .LVU680
|
|||
|
2414 0142 6C2A cmp r2, #108
|
|||
|
2415 0144 01D0 beq .L291
|
|||
|
649:Core/Src/printf.c **** format++;
|
|||
|
2416 .loc 1 649 15 view .LVU681
|
|||
|
2417 0146 0D46 mov r5, r1
|
|||
|
2418 0148 16E0 b .L208
|
|||
|
2419 .L291:
|
|||
|
652:Core/Src/printf.c **** format++;
|
|||
|
2420 .loc 1 652 11 is_stmt 1 view .LVU682
|
|||
|
652:Core/Src/printf.c **** format++;
|
|||
|
2421 .loc 1 652 17 is_stmt 0 view .LVU683
|
|||
|
2422 014a 45F44075 orr r5, r5, #768
|
|||
|
2423 .LVL255:
|
|||
|
653:Core/Src/printf.c **** }
|
|||
|
2424 .loc 1 653 11 is_stmt 1 view .LVU684
|
|||
|
653:Core/Src/printf.c **** }
|
|||
|
2425 .loc 1 653 17 is_stmt 0 view .LVU685
|
|||
|
2426 014e 0133 adds r3, r3, #1
|
|||
|
2427 0150 0D93 str r3, [sp, #52]
|
|||
|
2428 0152 11E0 b .L208
|
|||
|
2429 .L214:
|
|||
|
657:Core/Src/printf.c **** format++;
|
|||
|
2430 .loc 1 657 9 is_stmt 1 view .LVU686
|
|||
|
657:Core/Src/printf.c **** format++;
|
|||
|
2431 .loc 1 657 15 is_stmt 0 view .LVU687
|
|||
|
2432 0154 45F08001 orr r1, r5, #128
|
|||
|
2433 .LVL256:
|
|||
|
658:Core/Src/printf.c **** if (*format == 'h') {
|
|||
|
2434 .loc 1 658 9 is_stmt 1 view .LVU688
|
|||
|
658:Core/Src/printf.c **** if (*format == 'h') {
|
|||
|
2435 .loc 1 658 15 is_stmt 0 view .LVU689
|
|||
|
2436 0158 531C adds r3, r2, #1
|
|||
|
2437 015a 0D93 str r3, [sp, #52]
|
|||
|
659:Core/Src/printf.c **** flags |= FLAGS_CHAR;
|
|||
|
2438 .loc 1 659 9 is_stmt 1 view .LVU690
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 65
|
|||
|
|
|||
|
|
|||
|
659:Core/Src/printf.c **** flags |= FLAGS_CHAR;
|
|||
|
2439 .loc 1 659 13 is_stmt 0 view .LVU691
|
|||
|
2440 015c 5278 ldrb r2, [r2, #1] @ zero_extendqisi2
|
|||
|
659:Core/Src/printf.c **** flags |= FLAGS_CHAR;
|
|||
|
2441 .loc 1 659 12 view .LVU692
|
|||
|
2442 015e 682A cmp r2, #104
|
|||
|
2443 0160 01D0 beq .L292
|
|||
|
657:Core/Src/printf.c **** format++;
|
|||
|
2444 .loc 1 657 15 view .LVU693
|
|||
|
2445 0162 0D46 mov r5, r1
|
|||
|
2446 0164 08E0 b .L208
|
|||
|
2447 .L292:
|
|||
|
660:Core/Src/printf.c **** format++;
|
|||
|
2448 .loc 1 660 11 is_stmt 1 view .LVU694
|
|||
|
660:Core/Src/printf.c **** format++;
|
|||
|
2449 .loc 1 660 17 is_stmt 0 view .LVU695
|
|||
|
2450 0166 45F0C005 orr r5, r5, #192
|
|||
|
2451 .LVL257:
|
|||
|
661:Core/Src/printf.c **** }
|
|||
|
2452 .loc 1 661 11 is_stmt 1 view .LVU696
|
|||
|
661:Core/Src/printf.c **** }
|
|||
|
2453 .loc 1 661 17 is_stmt 0 view .LVU697
|
|||
|
2454 016a 0133 adds r3, r3, #1
|
|||
|
2455 016c 0D93 str r3, [sp, #52]
|
|||
|
2456 016e 03E0 b .L208
|
|||
|
2457 .L211:
|
|||
|
666:Core/Src/printf.c **** format++;
|
|||
|
2458 .loc 1 666 9 is_stmt 1 view .LVU698
|
|||
|
666:Core/Src/printf.c **** format++;
|
|||
|
2459 .loc 1 666 15 is_stmt 0 view .LVU699
|
|||
|
2460 0170 45F48075 orr r5, r5, #256
|
|||
|
2461 .LVL258:
|
|||
|
667:Core/Src/printf.c **** break;
|
|||
|
2462 .loc 1 667 9 is_stmt 1 view .LVU700
|
|||
|
667:Core/Src/printf.c **** break;
|
|||
|
2463 .loc 1 667 15 is_stmt 0 view .LVU701
|
|||
|
2464 0174 0132 adds r2, r2, #1
|
|||
|
2465 0176 0D92 str r2, [sp, #52]
|
|||
|
668:Core/Src/printf.c **** #endif
|
|||
|
2466 .loc 1 668 9 is_stmt 1 view .LVU702
|
|||
|
2467 .L208:
|
|||
|
683:Core/Src/printf.c **** case 'd' :
|
|||
|
2468 .loc 1 683 5 view .LVU703
|
|||
|
683:Core/Src/printf.c **** case 'd' :
|
|||
|
2469 .loc 1 683 13 is_stmt 0 view .LVU704
|
|||
|
2470 0178 0D9B ldr r3, [sp, #52]
|
|||
|
2471 017a 1878 ldrb r0, [r3] @ zero_extendqisi2
|
|||
|
2472 017c A0F12503 sub r3, r0, #37
|
|||
|
2473 0180 532B cmp r3, #83
|
|||
|
2474 0182 00F25F82 bhi .L215
|
|||
|
2475 0186 DFE813F0 tbh [pc, r3, lsl #1]
|
|||
|
2476 .L217:
|
|||
|
2477 018a 5202 .2byte (.L223-.L217)/2
|
|||
|
2478 018c 5D02 .2byte (.L215-.L217)/2
|
|||
|
2479 018e 5D02 .2byte (.L215-.L217)/2
|
|||
|
2480 0190 5D02 .2byte (.L215-.L217)/2
|
|||
|
2481 0192 5D02 .2byte (.L215-.L217)/2
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 66
|
|||
|
|
|||
|
|
|||
|
2482 0194 5D02 .2byte (.L215-.L217)/2
|
|||
|
2483 0196 5D02 .2byte (.L215-.L217)/2
|
|||
|
2484 0198 5D02 .2byte (.L215-.L217)/2
|
|||
|
2485 019a 5D02 .2byte (.L215-.L217)/2
|
|||
|
2486 019c 5D02 .2byte (.L215-.L217)/2
|
|||
|
2487 019e 5D02 .2byte (.L215-.L217)/2
|
|||
|
2488 01a0 5D02 .2byte (.L215-.L217)/2
|
|||
|
2489 01a2 5D02 .2byte (.L215-.L217)/2
|
|||
|
2490 01a4 5D02 .2byte (.L215-.L217)/2
|
|||
|
2491 01a6 5D02 .2byte (.L215-.L217)/2
|
|||
|
2492 01a8 5D02 .2byte (.L215-.L217)/2
|
|||
|
2493 01aa 5D02 .2byte (.L215-.L217)/2
|
|||
|
2494 01ac 5D02 .2byte (.L215-.L217)/2
|
|||
|
2495 01ae 5D02 .2byte (.L215-.L217)/2
|
|||
|
2496 01b0 5D02 .2byte (.L215-.L217)/2
|
|||
|
2497 01b2 5D02 .2byte (.L215-.L217)/2
|
|||
|
2498 01b4 5D02 .2byte (.L215-.L217)/2
|
|||
|
2499 01b6 5D02 .2byte (.L215-.L217)/2
|
|||
|
2500 01b8 5D02 .2byte (.L215-.L217)/2
|
|||
|
2501 01ba 5D02 .2byte (.L215-.L217)/2
|
|||
|
2502 01bc 5D02 .2byte (.L215-.L217)/2
|
|||
|
2503 01be 5D02 .2byte (.L215-.L217)/2
|
|||
|
2504 01c0 5D02 .2byte (.L215-.L217)/2
|
|||
|
2505 01c2 5D02 .2byte (.L215-.L217)/2
|
|||
|
2506 01c4 5D02 .2byte (.L215-.L217)/2
|
|||
|
2507 01c6 5D02 .2byte (.L215-.L217)/2
|
|||
|
2508 01c8 5D02 .2byte (.L215-.L217)/2
|
|||
|
2509 01ca 6D01 .2byte (.L220-.L217)/2
|
|||
|
2510 01cc 4F01 .2byte (.L221-.L217)/2
|
|||
|
2511 01ce 6D01 .2byte (.L220-.L217)/2
|
|||
|
2512 01d0 5D02 .2byte (.L215-.L217)/2
|
|||
|
2513 01d2 5D02 .2byte (.L215-.L217)/2
|
|||
|
2514 01d4 5D02 .2byte (.L215-.L217)/2
|
|||
|
2515 01d6 5D02 .2byte (.L215-.L217)/2
|
|||
|
2516 01d8 5D02 .2byte (.L215-.L217)/2
|
|||
|
2517 01da 5D02 .2byte (.L215-.L217)/2
|
|||
|
2518 01dc 5D02 .2byte (.L215-.L217)/2
|
|||
|
2519 01de 5D02 .2byte (.L215-.L217)/2
|
|||
|
2520 01e0 5D02 .2byte (.L215-.L217)/2
|
|||
|
2521 01e2 5D02 .2byte (.L215-.L217)/2
|
|||
|
2522 01e4 5D02 .2byte (.L215-.L217)/2
|
|||
|
2523 01e6 5D02 .2byte (.L215-.L217)/2
|
|||
|
2524 01e8 5D02 .2byte (.L215-.L217)/2
|
|||
|
2525 01ea 5D02 .2byte (.L215-.L217)/2
|
|||
|
2526 01ec 5D02 .2byte (.L215-.L217)/2
|
|||
|
2527 01ee 5D02 .2byte (.L215-.L217)/2
|
|||
|
2528 01f0 5E00 .2byte (.L216-.L217)/2
|
|||
|
2529 01f2 5D02 .2byte (.L215-.L217)/2
|
|||
|
2530 01f4 5D02 .2byte (.L215-.L217)/2
|
|||
|
2531 01f6 5D02 .2byte (.L215-.L217)/2
|
|||
|
2532 01f8 5D02 .2byte (.L215-.L217)/2
|
|||
|
2533 01fa 5D02 .2byte (.L215-.L217)/2
|
|||
|
2534 01fc 5D02 .2byte (.L215-.L217)/2
|
|||
|
2535 01fe 5D02 .2byte (.L215-.L217)/2
|
|||
|
2536 0200 5D02 .2byte (.L215-.L217)/2
|
|||
|
2537 0202 5D02 .2byte (.L215-.L217)/2
|
|||
|
2538 0204 5E00 .2byte (.L216-.L217)/2
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 67
|
|||
|
|
|||
|
|
|||
|
2539 0206 9901 .2byte (.L222-.L217)/2
|
|||
|
2540 0208 5E00 .2byte (.L216-.L217)/2
|
|||
|
2541 020a 6D01 .2byte (.L220-.L217)/2
|
|||
|
2542 020c 4F01 .2byte (.L221-.L217)/2
|
|||
|
2543 020e 6D01 .2byte (.L220-.L217)/2
|
|||
|
2544 0210 5D02 .2byte (.L215-.L217)/2
|
|||
|
2545 0212 5E00 .2byte (.L216-.L217)/2
|
|||
|
2546 0214 5D02 .2byte (.L215-.L217)/2
|
|||
|
2547 0216 5D02 .2byte (.L215-.L217)/2
|
|||
|
2548 0218 5D02 .2byte (.L215-.L217)/2
|
|||
|
2549 021a 5D02 .2byte (.L215-.L217)/2
|
|||
|
2550 021c 5D02 .2byte (.L215-.L217)/2
|
|||
|
2551 021e 5E00 .2byte (.L216-.L217)/2
|
|||
|
2552 0220 3702 .2byte (.L219-.L217)/2
|
|||
|
2553 0222 5D02 .2byte (.L215-.L217)/2
|
|||
|
2554 0224 5D02 .2byte (.L215-.L217)/2
|
|||
|
2555 0226 D201 .2byte (.L218-.L217)/2
|
|||
|
2556 0228 5D02 .2byte (.L215-.L217)/2
|
|||
|
2557 022a 5E00 .2byte (.L216-.L217)/2
|
|||
|
2558 022c 5D02 .2byte (.L215-.L217)/2
|
|||
|
2559 022e 5D02 .2byte (.L215-.L217)/2
|
|||
|
2560 0230 5E00 .2byte (.L216-.L217)/2
|
|||
|
2561 .p2align 1
|
|||
|
2562 .L213:
|
|||
|
671:Core/Src/printf.c **** format++;
|
|||
|
2563 .loc 1 671 9 is_stmt 1 view .LVU705
|
|||
|
671:Core/Src/printf.c **** format++;
|
|||
|
2564 .loc 1 671 15 is_stmt 0 view .LVU706
|
|||
|
2565 0232 45F40075 orr r5, r5, #512
|
|||
|
2566 .LVL259:
|
|||
|
672:Core/Src/printf.c **** break;
|
|||
|
2567 .loc 1 672 9 is_stmt 1 view .LVU707
|
|||
|
672:Core/Src/printf.c **** break;
|
|||
|
2568 .loc 1 672 15 is_stmt 0 view .LVU708
|
|||
|
2569 0236 0132 adds r2, r2, #1
|
|||
|
2570 0238 0D92 str r2, [sp, #52]
|
|||
|
673:Core/Src/printf.c **** case 'z' :
|
|||
|
2571 .loc 1 673 9 is_stmt 1 view .LVU709
|
|||
|
2572 023a 9DE7 b .L208
|
|||
|
2573 .L209:
|
|||
|
675:Core/Src/printf.c **** format++;
|
|||
|
2574 .loc 1 675 9 view .LVU710
|
|||
|
675:Core/Src/printf.c **** format++;
|
|||
|
2575 .loc 1 675 15 is_stmt 0 view .LVU711
|
|||
|
2576 023c 45F48075 orr r5, r5, #256
|
|||
|
2577 .LVL260:
|
|||
|
676:Core/Src/printf.c **** break;
|
|||
|
2578 .loc 1 676 9 is_stmt 1 view .LVU712
|
|||
|
676:Core/Src/printf.c **** break;
|
|||
|
2579 .loc 1 676 15 is_stmt 0 view .LVU713
|
|||
|
2580 0240 0132 adds r2, r2, #1
|
|||
|
2581 0242 0D92 str r2, [sp, #52]
|
|||
|
677:Core/Src/printf.c **** default :
|
|||
|
2582 .loc 1 677 9 is_stmt 1 view .LVU714
|
|||
|
2583 0244 98E7 b .L208
|
|||
|
2584 .L216:
|
|||
|
2585 .LBB39:
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 68
|
|||
|
|
|||
|
|
|||
|
692:Core/Src/printf.c **** if (*format == 'x' || *format == 'X') {
|
|||
|
2586 .loc 1 692 9 view .LVU715
|
|||
|
693:Core/Src/printf.c **** base = 16U;
|
|||
|
2587 .loc 1 693 9 view .LVU716
|
|||
|
693:Core/Src/printf.c **** base = 16U;
|
|||
|
2588 .loc 1 693 12 is_stmt 0 view .LVU717
|
|||
|
2589 0246 5828 cmp r0, #88
|
|||
|
2590 0248 18BF it ne
|
|||
|
2591 024a 7828 cmpne r0, #120
|
|||
|
2592 024c 07D0 beq .L274
|
|||
|
696:Core/Src/printf.c **** base = 8U;
|
|||
|
2593 .loc 1 696 14 is_stmt 1 view .LVU718
|
|||
|
696:Core/Src/printf.c **** base = 8U;
|
|||
|
2594 .loc 1 696 17 is_stmt 0 view .LVU719
|
|||
|
2595 024e 6F28 cmp r0, #111
|
|||
|
2596 0250 3CD0 beq .L275
|
|||
|
699:Core/Src/printf.c **** base = 2U;
|
|||
|
2597 .loc 1 699 14 is_stmt 1 view .LVU720
|
|||
|
699:Core/Src/printf.c **** base = 2U;
|
|||
|
2598 .loc 1 699 17 is_stmt 0 view .LVU721
|
|||
|
2599 0252 6228 cmp r0, #98
|
|||
|
2600 0254 3CD0 beq .L276
|
|||
|
703:Core/Src/printf.c **** flags &= ~FLAGS_HASH; // no hash for dec format
|
|||
|
2601 .loc 1 703 11 is_stmt 1 view .LVU722
|
|||
|
2602 .LVL261:
|
|||
|
704:Core/Src/printf.c **** }
|
|||
|
2603 .loc 1 704 11 view .LVU723
|
|||
|
704:Core/Src/printf.c **** }
|
|||
|
2604 .loc 1 704 17 is_stmt 0 view .LVU724
|
|||
|
2605 0256 25F01005 bic r5, r5, #16
|
|||
|
2606 .LVL262:
|
|||
|
703:Core/Src/printf.c **** flags &= ~FLAGS_HASH; // no hash for dec format
|
|||
|
2607 .loc 1 703 16 view .LVU725
|
|||
|
2608 025a 0A23 movs r3, #10
|
|||
|
2609 025c 00E0 b .L224
|
|||
|
2610 .LVL263:
|
|||
|
2611 .L274:
|
|||
|
694:Core/Src/printf.c **** }
|
|||
|
2612 .loc 1 694 16 view .LVU726
|
|||
|
2613 025e 1023 movs r3, #16
|
|||
|
2614 .L224:
|
|||
|
2615 .LVL264:
|
|||
|
707:Core/Src/printf.c **** flags |= FLAGS_UPPERCASE;
|
|||
|
2616 .loc 1 707 9 is_stmt 1 view .LVU727
|
|||
|
707:Core/Src/printf.c **** flags |= FLAGS_UPPERCASE;
|
|||
|
2617 .loc 1 707 12 is_stmt 0 view .LVU728
|
|||
|
2618 0260 5828 cmp r0, #88
|
|||
|
2619 0262 37D0 beq .L293
|
|||
|
2620 .L225:
|
|||
|
712:Core/Src/printf.c **** flags &= ~(FLAGS_PLUS | FLAGS_SPACE);
|
|||
|
2621 .loc 1 712 9 is_stmt 1 view .LVU729
|
|||
|
712:Core/Src/printf.c **** flags &= ~(FLAGS_PLUS | FLAGS_SPACE);
|
|||
|
2622 .loc 1 712 12 is_stmt 0 view .LVU730
|
|||
|
2623 0264 6928 cmp r0, #105
|
|||
|
2624 0266 18BF it ne
|
|||
|
2625 0268 6428 cmpne r0, #100
|
|||
|
2626 026a 01D0 beq .L226
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 69
|
|||
|
|
|||
|
|
|||
|
713:Core/Src/printf.c **** }
|
|||
|
2627 .loc 1 713 11 is_stmt 1 view .LVU731
|
|||
|
713:Core/Src/printf.c **** }
|
|||
|
2628 .loc 1 713 17 is_stmt 0 view .LVU732
|
|||
|
2629 026c 25F00C05 bic r5, r5, #12
|
|||
|
2630 .LVL265:
|
|||
|
2631 .L226:
|
|||
|
717:Core/Src/printf.c **** flags &= ~FLAGS_ZEROPAD;
|
|||
|
2632 .loc 1 717 9 is_stmt 1 view .LVU733
|
|||
|
717:Core/Src/printf.c **** flags &= ~FLAGS_ZEROPAD;
|
|||
|
2633 .loc 1 717 12 is_stmt 0 view .LVU734
|
|||
|
2634 0270 15F4806F tst r5, #1024
|
|||
|
2635 0274 01D0 beq .L227
|
|||
|
718:Core/Src/printf.c **** }
|
|||
|
2636 .loc 1 718 11 is_stmt 1 view .LVU735
|
|||
|
718:Core/Src/printf.c **** }
|
|||
|
2637 .loc 1 718 17 is_stmt 0 view .LVU736
|
|||
|
2638 0276 25F00105 bic r5, r5, #1
|
|||
|
2639 .LVL266:
|
|||
|
2640 .L227:
|
|||
|
722:Core/Src/printf.c **** // signed
|
|||
|
2641 .loc 1 722 9 is_stmt 1 view .LVU737
|
|||
|
722:Core/Src/printf.c **** // signed
|
|||
|
2642 .loc 1 722 12 is_stmt 0 view .LVU738
|
|||
|
2643 027a 6428 cmp r0, #100
|
|||
|
2644 027c 18BF it ne
|
|||
|
2645 027e 6928 cmpne r0, #105
|
|||
|
2646 0280 76D1 bne .L228
|
|||
|
724:Core/Src/printf.c **** #if defined(PRINTF_SUPPORT_LONG_LONG)
|
|||
|
2647 .loc 1 724 11 is_stmt 1 view .LVU739
|
|||
|
724:Core/Src/printf.c **** #if defined(PRINTF_SUPPORT_LONG_LONG)
|
|||
|
2648 .loc 1 724 14 is_stmt 0 view .LVU740
|
|||
|
2649 0282 15F4007F tst r5, #512
|
|||
|
2650 0286 28D1 bne .L294
|
|||
|
730:Core/Src/printf.c **** const long value = va_arg(va, long);
|
|||
|
2651 .loc 1 730 16 is_stmt 1 view .LVU741
|
|||
|
730:Core/Src/printf.c **** const long value = va_arg(va, long);
|
|||
|
2652 .loc 1 730 19 is_stmt 0 view .LVU742
|
|||
|
2653 0288 15F4807F tst r5, #256
|
|||
|
2654 028c 49D1 bne .L295
|
|||
|
2655 .LBB40:
|
|||
|
735:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned int)(value > 0 ? value : 0 - value
|
|||
|
2656 .loc 1 735 13 is_stmt 1 view .LVU743
|
|||
|
735:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned int)(value > 0 ? value : 0 - value
|
|||
|
2657 .loc 1 735 76 is_stmt 0 view .LVU744
|
|||
|
2658 028e 15F0400F tst r5, #64
|
|||
|
2659 0292 5FD0 beq .L233
|
|||
|
735:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned int)(value > 0 ? value : 0 - value
|
|||
|
2660 .loc 1 735 60 view .LVU745
|
|||
|
2661 0294 189A ldr r2, [sp, #96]
|
|||
|
2662 0296 111D adds r1, r2, #4
|
|||
|
2663 0298 1891 str r1, [sp, #96]
|
|||
|
2664 029a 1278 ldrb r2, [r2] @ zero_extendqisi2
|
|||
|
2665 .L234:
|
|||
|
2666 .LVL267:
|
|||
|
736:Core/Src/printf.c **** }
|
|||
|
2667 .loc 1 736 13 is_stmt 1 discriminator 8 view .LVU746
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 70
|
|||
|
|
|||
|
|
|||
|
736:Core/Src/printf.c **** }
|
|||
|
2668 .loc 1 736 56 is_stmt 0 discriminator 8 view .LVU747
|
|||
|
2669 029c 82EAE271 eor r1, r2, r2, asr #31
|
|||
|
2670 02a0 A1EBE271 sub r1, r1, r2, asr #31
|
|||
|
736:Core/Src/printf.c **** }
|
|||
|
2671 .loc 1 736 19 discriminator 8 view .LVU748
|
|||
|
2672 02a4 0595 str r5, [sp, #20]
|
|||
|
2673 02a6 0A98 ldr r0, [sp, #40]
|
|||
|
2674 02a8 0490 str r0, [sp, #16]
|
|||
|
2675 02aa CDF80CB0 str fp, [sp, #12]
|
|||
|
2676 02ae 0293 str r3, [sp, #8]
|
|||
|
2677 02b0 D20F lsrs r2, r2, #31
|
|||
|
2678 .LVL268:
|
|||
|
736:Core/Src/printf.c **** }
|
|||
|
2679 .loc 1 736 19 discriminator 8 view .LVU749
|
|||
|
2680 02b2 0192 str r2, [sp, #4]
|
|||
|
2681 02b4 0091 str r1, [sp]
|
|||
|
2682 02b6 3346 mov r3, r6
|
|||
|
2683 .LVL269:
|
|||
|
736:Core/Src/printf.c **** }
|
|||
|
2684 .loc 1 736 19 discriminator 8 view .LVU750
|
|||
|
2685 02b8 2246 mov r2, r4
|
|||
|
2686 02ba 4146 mov r1, r8
|
|||
|
2687 02bc 3846 mov r0, r7
|
|||
|
2688 02be FFF7FEFF bl _ntoa_long
|
|||
|
2689 .LVL270:
|
|||
|
736:Core/Src/printf.c **** }
|
|||
|
2690 .loc 1 736 19 discriminator 8 view .LVU751
|
|||
|
2691 02c2 0446 mov r4, r0
|
|||
|
2692 .LVL271:
|
|||
|
2693 .L231:
|
|||
|
736:Core/Src/printf.c **** }
|
|||
|
2694 .loc 1 736 19 discriminator 8 view .LVU752
|
|||
|
2695 .LBE40:
|
|||
|
754:Core/Src/printf.c **** break;
|
|||
|
2696 .loc 1 754 9 is_stmt 1 view .LVU753
|
|||
|
754:Core/Src/printf.c **** break;
|
|||
|
2697 .loc 1 754 15 is_stmt 0 view .LVU754
|
|||
|
2698 02c4 0D9B ldr r3, [sp, #52]
|
|||
|
2699 02c6 0133 adds r3, r3, #1
|
|||
|
2700 02c8 0D93 str r3, [sp, #52]
|
|||
|
755:Core/Src/printf.c **** }
|
|||
|
2701 .loc 1 755 9 is_stmt 1 view .LVU755
|
|||
|
2702 02ca A4E6 b .L265
|
|||
|
2703 .LVL272:
|
|||
|
2704 .L275:
|
|||
|
697:Core/Src/printf.c **** }
|
|||
|
2705 .loc 1 697 16 is_stmt 0 view .LVU756
|
|||
|
2706 02cc 0823 movs r3, #8
|
|||
|
2707 02ce C7E7 b .L224
|
|||
|
2708 .L276:
|
|||
|
700:Core/Src/printf.c **** }
|
|||
|
2709 .loc 1 700 16 view .LVU757
|
|||
|
2710 02d0 0223 movs r3, #2
|
|||
|
2711 02d2 C5E7 b .L224
|
|||
|
2712 .LVL273:
|
|||
|
2713 .L293:
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 71
|
|||
|
|
|||
|
|
|||
|
708:Core/Src/printf.c **** }
|
|||
|
2714 .loc 1 708 11 is_stmt 1 view .LVU758
|
|||
|
708:Core/Src/printf.c **** }
|
|||
|
2715 .loc 1 708 17 is_stmt 0 view .LVU759
|
|||
|
2716 02d4 45F02005 orr r5, r5, #32
|
|||
|
2717 .LVL274:
|
|||
|
708:Core/Src/printf.c **** }
|
|||
|
2718 .loc 1 708 17 view .LVU760
|
|||
|
2719 02d8 C4E7 b .L225
|
|||
|
2720 .L294:
|
|||
|
2721 .LBB41:
|
|||
|
726:Core/Src/printf.c **** idx = _ntoa_long_long(out, buffer, idx, maxlen, (unsigned long long)(value > 0 ? value
|
|||
|
2722 .loc 1 726 13 is_stmt 1 view .LVU761
|
|||
|
726:Core/Src/printf.c **** idx = _ntoa_long_long(out, buffer, idx, maxlen, (unsigned long long)(value > 0 ? value
|
|||
|
2723 .loc 1 726 29 is_stmt 0 view .LVU762
|
|||
|
2724 02da 189A ldr r2, [sp, #96]
|
|||
|
2725 02dc 0732 adds r2, r2, #7
|
|||
|
2726 02de 22F00702 bic r2, r2, #7
|
|||
|
2727 02e2 02F10801 add r1, r2, #8
|
|||
|
2728 02e6 1891 str r1, [sp, #96]
|
|||
|
2729 02e8 5168 ldr r1, [r2, #4]
|
|||
|
727:Core/Src/printf.c **** #endif
|
|||
|
2730 .loc 1 727 13 is_stmt 1 view .LVU763
|
|||
|
727:Core/Src/printf.c **** #endif
|
|||
|
2731 .loc 1 727 61 is_stmt 0 view .LVU764
|
|||
|
2732 02ea 1268 ldr r2, [r2]
|
|||
|
2733 02ec 0846 mov r0, r1
|
|||
|
2734 02ee 0029 cmp r1, #0
|
|||
|
2735 02f0 13DB blt .L296
|
|||
|
2736 .L230:
|
|||
|
727:Core/Src/printf.c **** #endif
|
|||
|
2737 .loc 1 727 19 view .LVU765
|
|||
|
2738 02f2 0895 str r5, [sp, #32]
|
|||
|
2739 02f4 0A9D ldr r5, [sp, #40]
|
|||
|
2740 .LVL275:
|
|||
|
727:Core/Src/printf.c **** #endif
|
|||
|
2741 .loc 1 727 19 view .LVU766
|
|||
|
2742 02f6 0795 str r5, [sp, #28]
|
|||
|
2743 02f8 CDF818B0 str fp, [sp, #24]
|
|||
|
2744 02fc 0493 str r3, [sp, #16]
|
|||
|
2745 02fe 0023 movs r3, #0
|
|||
|
2746 .LVL276:
|
|||
|
727:Core/Src/printf.c **** #endif
|
|||
|
2747 .loc 1 727 19 view .LVU767
|
|||
|
2748 0300 0593 str r3, [sp, #20]
|
|||
|
2749 0302 C90F lsrs r1, r1, #31
|
|||
|
2750 0304 0291 str r1, [sp, #8]
|
|||
|
2751 0306 0092 str r2, [sp]
|
|||
|
2752 0308 0190 str r0, [sp, #4]
|
|||
|
2753 030a 3346 mov r3, r6
|
|||
|
2754 030c 2246 mov r2, r4
|
|||
|
2755 030e 4146 mov r1, r8
|
|||
|
2756 0310 3846 mov r0, r7
|
|||
|
2757 0312 FFF7FEFF bl _ntoa_long_long
|
|||
|
2758 .LVL277:
|
|||
|
727:Core/Src/printf.c **** #endif
|
|||
|
2759 .loc 1 727 19 view .LVU768
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 72
|
|||
|
|
|||
|
|
|||
|
2760 0316 0446 mov r4, r0
|
|||
|
2761 .LVL278:
|
|||
|
727:Core/Src/printf.c **** #endif
|
|||
|
2762 .loc 1 727 19 view .LVU769
|
|||
|
2763 .LBE41:
|
|||
|
2764 0318 D4E7 b .L231
|
|||
|
2765 .LVL279:
|
|||
|
2766 .L296:
|
|||
|
2767 .LBB42:
|
|||
|
727:Core/Src/printf.c **** #endif
|
|||
|
2768 .loc 1 727 61 view .LVU770
|
|||
|
2769 031a 5242 negs r2, r2
|
|||
|
2770 031c 61EB4100 sbc r0, r1, r1, lsl #1
|
|||
|
2771 0320 E7E7 b .L230
|
|||
|
2772 .L295:
|
|||
|
2773 .LBE42:
|
|||
|
2774 .LBB43:
|
|||
|
731:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned long)(value > 0 ? value : 0 - valu
|
|||
|
2775 .loc 1 731 13 is_stmt 1 view .LVU771
|
|||
|
731:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned long)(value > 0 ? value : 0 - valu
|
|||
|
2776 .loc 1 731 24 is_stmt 0 view .LVU772
|
|||
|
2777 0322 189A ldr r2, [sp, #96]
|
|||
|
2778 0324 111D adds r1, r2, #4
|
|||
|
2779 0326 1891 str r1, [sp, #96]
|
|||
|
2780 0328 1268 ldr r2, [r2]
|
|||
|
732:Core/Src/printf.c **** }
|
|||
|
2781 .loc 1 732 13 is_stmt 1 view .LVU773
|
|||
|
732:Core/Src/printf.c **** }
|
|||
|
2782 .loc 1 732 56 is_stmt 0 view .LVU774
|
|||
|
2783 032a 82EAE271 eor r1, r2, r2, asr #31
|
|||
|
2784 032e A1EBE271 sub r1, r1, r2, asr #31
|
|||
|
732:Core/Src/printf.c **** }
|
|||
|
2785 .loc 1 732 19 view .LVU775
|
|||
|
2786 0332 0595 str r5, [sp, #20]
|
|||
|
2787 0334 0A98 ldr r0, [sp, #40]
|
|||
|
2788 0336 0490 str r0, [sp, #16]
|
|||
|
2789 0338 CDF80CB0 str fp, [sp, #12]
|
|||
|
2790 033c 0293 str r3, [sp, #8]
|
|||
|
2791 033e D20F lsrs r2, r2, #31
|
|||
|
2792 0340 0192 str r2, [sp, #4]
|
|||
|
2793 0342 0091 str r1, [sp]
|
|||
|
2794 0344 3346 mov r3, r6
|
|||
|
2795 .LVL280:
|
|||
|
732:Core/Src/printf.c **** }
|
|||
|
2796 .loc 1 732 19 view .LVU776
|
|||
|
2797 0346 2246 mov r2, r4
|
|||
|
2798 0348 4146 mov r1, r8
|
|||
|
2799 034a 3846 mov r0, r7
|
|||
|
2800 034c FFF7FEFF bl _ntoa_long
|
|||
|
2801 .LVL281:
|
|||
|
732:Core/Src/printf.c **** }
|
|||
|
2802 .loc 1 732 19 view .LVU777
|
|||
|
2803 0350 0446 mov r4, r0
|
|||
|
2804 .LVL282:
|
|||
|
732:Core/Src/printf.c **** }
|
|||
|
2805 .loc 1 732 19 view .LVU778
|
|||
|
2806 .LBE43:
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 73
|
|||
|
|
|||
|
|
|||
|
2807 0352 B7E7 b .L231
|
|||
|
2808 .LVL283:
|
|||
|
2809 .L233:
|
|||
|
2810 .LBB44:
|
|||
|
735:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned int)(value > 0 ? value : 0 - value
|
|||
|
2811 .loc 1 735 129 discriminator 2 view .LVU779
|
|||
|
2812 0354 15F0800F tst r5, #128
|
|||
|
2813 0358 05D0 beq .L235
|
|||
|
735:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned int)(value > 0 ? value : 0 - value
|
|||
|
2814 .loc 1 735 113 view .LVU780
|
|||
|
2815 035a 189A ldr r2, [sp, #96]
|
|||
|
2816 035c 111D adds r1, r2, #4
|
|||
|
2817 035e 1891 str r1, [sp, #96]
|
|||
|
735:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned int)(value > 0 ? value : 0 - value
|
|||
|
2818 .loc 1 735 102 view .LVU781
|
|||
|
2819 0360 B2F90020 ldrsh r2, [r2]
|
|||
|
2820 0364 9AE7 b .L234
|
|||
|
2821 .L235:
|
|||
|
735:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned int)(value > 0 ? value : 0 - value
|
|||
|
2822 .loc 1 735 129 view .LVU782
|
|||
|
2823 0366 189A ldr r2, [sp, #96]
|
|||
|
2824 0368 111D adds r1, r2, #4
|
|||
|
2825 036a 1891 str r1, [sp, #96]
|
|||
|
2826 036c 1268 ldr r2, [r2]
|
|||
|
2827 036e 95E7 b .L234
|
|||
|
2828 .L228:
|
|||
|
735:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned int)(value > 0 ? value : 0 - value
|
|||
|
2829 .loc 1 735 129 view .LVU783
|
|||
|
2830 .LBE44:
|
|||
|
741:Core/Src/printf.c **** #if defined(PRINTF_SUPPORT_LONG_LONG)
|
|||
|
2831 .loc 1 741 11 is_stmt 1 view .LVU784
|
|||
|
741:Core/Src/printf.c **** #if defined(PRINTF_SUPPORT_LONG_LONG)
|
|||
|
2832 .loc 1 741 14 is_stmt 0 view .LVU785
|
|||
|
2833 0370 15F4007F tst r5, #512
|
|||
|
2834 0374 1AD1 bne .L297
|
|||
|
746:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, va_arg(va, unsigned long), false, base, prec
|
|||
|
2835 .loc 1 746 16 is_stmt 1 view .LVU786
|
|||
|
746:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, va_arg(va, unsigned long), false, base, prec
|
|||
|
2836 .loc 1 746 19 is_stmt 0 view .LVU787
|
|||
|
2837 0376 15F4807F tst r5, #256
|
|||
|
2838 037a 33D1 bne .L298
|
|||
|
2839 .LBB45:
|
|||
|
750:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, value, false, base, precision, width, flags)
|
|||
|
2840 .loc 1 750 13 is_stmt 1 view .LVU788
|
|||
|
750:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, value, false, base, precision, width, flags)
|
|||
|
2841 .loc 1 750 103 is_stmt 0 view .LVU789
|
|||
|
2842 037c 15F0400F tst r5, #64
|
|||
|
2843 0380 45D0 beq .L238
|
|||
|
750:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, value, false, base, precision, width, flags)
|
|||
|
2844 .loc 1 750 78 view .LVU790
|
|||
|
2845 0382 189A ldr r2, [sp, #96]
|
|||
|
2846 0384 111D adds r1, r2, #4
|
|||
|
2847 0386 1891 str r1, [sp, #96]
|
|||
|
2848 0388 1278 ldrb r2, [r2] @ zero_extendqisi2
|
|||
|
2849 .L239:
|
|||
|
2850 .LVL284:
|
|||
|
751:Core/Src/printf.c **** }
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 74
|
|||
|
|
|||
|
|
|||
|
2851 .loc 1 751 13 is_stmt 1 discriminator 8 view .LVU791
|
|||
|
751:Core/Src/printf.c **** }
|
|||
|
2852 .loc 1 751 19 is_stmt 0 discriminator 8 view .LVU792
|
|||
|
2853 038a 0595 str r5, [sp, #20]
|
|||
|
2854 038c 0A99 ldr r1, [sp, #40]
|
|||
|
2855 038e 0491 str r1, [sp, #16]
|
|||
|
2856 0390 CDF80CB0 str fp, [sp, #12]
|
|||
|
2857 0394 0293 str r3, [sp, #8]
|
|||
|
2858 0396 0023 movs r3, #0
|
|||
|
2859 .LVL285:
|
|||
|
751:Core/Src/printf.c **** }
|
|||
|
2860 .loc 1 751 19 discriminator 8 view .LVU793
|
|||
|
2861 0398 0193 str r3, [sp, #4]
|
|||
|
2862 039a 0092 str r2, [sp]
|
|||
|
2863 039c 3346 mov r3, r6
|
|||
|
2864 039e 2246 mov r2, r4
|
|||
|
2865 .LVL286:
|
|||
|
751:Core/Src/printf.c **** }
|
|||
|
2866 .loc 1 751 19 discriminator 8 view .LVU794
|
|||
|
2867 03a0 4146 mov r1, r8
|
|||
|
2868 03a2 3846 mov r0, r7
|
|||
|
2869 03a4 FFF7FEFF bl _ntoa_long
|
|||
|
2870 .LVL287:
|
|||
|
751:Core/Src/printf.c **** }
|
|||
|
2871 .loc 1 751 19 discriminator 8 view .LVU795
|
|||
|
2872 03a8 0446 mov r4, r0
|
|||
|
2873 .LVL288:
|
|||
|
751:Core/Src/printf.c **** }
|
|||
|
2874 .loc 1 751 19 discriminator 8 view .LVU796
|
|||
|
2875 03aa 8BE7 b .L231
|
|||
|
2876 .LVL289:
|
|||
|
2877 .L297:
|
|||
|
751:Core/Src/printf.c **** }
|
|||
|
2878 .loc 1 751 19 discriminator 8 view .LVU797
|
|||
|
2879 .LBE45:
|
|||
|
743:Core/Src/printf.c **** #endif
|
|||
|
2880 .loc 1 743 13 is_stmt 1 view .LVU798
|
|||
|
743:Core/Src/printf.c **** #endif
|
|||
|
2881 .loc 1 743 19 is_stmt 0 view .LVU799
|
|||
|
2882 03ac 189A ldr r2, [sp, #96]
|
|||
|
2883 03ae 0732 adds r2, r2, #7
|
|||
|
2884 03b0 22F00702 bic r2, r2, #7
|
|||
|
2885 03b4 02F10801 add r1, r2, #8
|
|||
|
2886 03b8 1891 str r1, [sp, #96]
|
|||
|
2887 03ba 0895 str r5, [sp, #32]
|
|||
|
2888 03bc 0A99 ldr r1, [sp, #40]
|
|||
|
2889 03be 0791 str r1, [sp, #28]
|
|||
|
2890 03c0 CDF818B0 str fp, [sp, #24]
|
|||
|
2891 03c4 0021 movs r1, #0
|
|||
|
2892 03c6 0493 str r3, [sp, #16]
|
|||
|
2893 03c8 0591 str r1, [sp, #20]
|
|||
|
2894 03ca 0291 str r1, [sp, #8]
|
|||
|
2895 03cc D2E90023 ldrd r2, [r2]
|
|||
|
2896 03d0 CDE90023 strd r2, [sp]
|
|||
|
2897 03d4 3346 mov r3, r6
|
|||
|
2898 .LVL290:
|
|||
|
743:Core/Src/printf.c **** #endif
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 75
|
|||
|
|
|||
|
|
|||
|
2899 .loc 1 743 19 view .LVU800
|
|||
|
2900 03d6 2246 mov r2, r4
|
|||
|
2901 03d8 4146 mov r1, r8
|
|||
|
2902 03da 3846 mov r0, r7
|
|||
|
2903 03dc FFF7FEFF bl _ntoa_long_long
|
|||
|
2904 .LVL291:
|
|||
|
743:Core/Src/printf.c **** #endif
|
|||
|
2905 .loc 1 743 19 view .LVU801
|
|||
|
2906 03e0 0446 mov r4, r0
|
|||
|
2907 .LVL292:
|
|||
|
743:Core/Src/printf.c **** #endif
|
|||
|
2908 .loc 1 743 19 view .LVU802
|
|||
|
2909 03e2 6FE7 b .L231
|
|||
|
2910 .LVL293:
|
|||
|
2911 .L298:
|
|||
|
747:Core/Src/printf.c **** }
|
|||
|
2912 .loc 1 747 13 is_stmt 1 view .LVU803
|
|||
|
747:Core/Src/printf.c **** }
|
|||
|
2913 .loc 1 747 19 is_stmt 0 view .LVU804
|
|||
|
2914 03e4 189A ldr r2, [sp, #96]
|
|||
|
2915 03e6 111D adds r1, r2, #4
|
|||
|
2916 03e8 1891 str r1, [sp, #96]
|
|||
|
2917 03ea 0595 str r5, [sp, #20]
|
|||
|
2918 03ec 0A99 ldr r1, [sp, #40]
|
|||
|
2919 03ee 0491 str r1, [sp, #16]
|
|||
|
2920 03f0 CDF80CB0 str fp, [sp, #12]
|
|||
|
2921 03f4 0293 str r3, [sp, #8]
|
|||
|
2922 03f6 0023 movs r3, #0
|
|||
|
2923 .LVL294:
|
|||
|
747:Core/Src/printf.c **** }
|
|||
|
2924 .loc 1 747 19 view .LVU805
|
|||
|
2925 03f8 0193 str r3, [sp, #4]
|
|||
|
2926 03fa 1368 ldr r3, [r2]
|
|||
|
2927 03fc 0093 str r3, [sp]
|
|||
|
2928 03fe 3346 mov r3, r6
|
|||
|
2929 0400 2246 mov r2, r4
|
|||
|
2930 0402 4146 mov r1, r8
|
|||
|
2931 0404 3846 mov r0, r7
|
|||
|
2932 0406 FFF7FEFF bl _ntoa_long
|
|||
|
2933 .LVL295:
|
|||
|
747:Core/Src/printf.c **** }
|
|||
|
2934 .loc 1 747 19 view .LVU806
|
|||
|
2935 040a 0446 mov r4, r0
|
|||
|
2936 .LVL296:
|
|||
|
747:Core/Src/printf.c **** }
|
|||
|
2937 .loc 1 747 19 view .LVU807
|
|||
|
2938 040c 5AE7 b .L231
|
|||
|
2939 .LVL297:
|
|||
|
2940 .L238:
|
|||
|
2941 .LBB46:
|
|||
|
750:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, value, false, base, precision, width, flags)
|
|||
|
2942 .loc 1 750 174 discriminator 2 view .LVU808
|
|||
|
2943 040e 15F0800F tst r5, #128
|
|||
|
2944 0412 04D0 beq .L240
|
|||
|
750:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, value, false, base, precision, width, flags)
|
|||
|
2945 .loc 1 750 149 view .LVU809
|
|||
|
2946 0414 189A ldr r2, [sp, #96]
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 76
|
|||
|
|
|||
|
|
|||
|
2947 0416 111D adds r1, r2, #4
|
|||
|
2948 0418 1891 str r1, [sp, #96]
|
|||
|
2949 041a 1288 ldrh r2, [r2]
|
|||
|
2950 041c B5E7 b .L239
|
|||
|
2951 .L240:
|
|||
|
750:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, value, false, base, precision, width, flags)
|
|||
|
2952 .loc 1 750 174 view .LVU810
|
|||
|
2953 041e 189A ldr r2, [sp, #96]
|
|||
|
2954 0420 111D adds r1, r2, #4
|
|||
|
2955 0422 1891 str r1, [sp, #96]
|
|||
|
2956 0424 1268 ldr r2, [r2]
|
|||
|
2957 0426 B0E7 b .L239
|
|||
|
2958 .LVL298:
|
|||
|
2959 .L221:
|
|||
|
750:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, value, false, base, precision, width, flags)
|
|||
|
2960 .loc 1 750 174 view .LVU811
|
|||
|
2961 .LBE46:
|
|||
|
2962 .LBE39:
|
|||
|
760:Core/Src/printf.c **** idx = _ftoa(out, buffer, idx, maxlen, va_arg(va, double), precision, width, flags);
|
|||
|
2963 .loc 1 760 9 is_stmt 1 view .LVU812
|
|||
|
760:Core/Src/printf.c **** idx = _ftoa(out, buffer, idx, maxlen, va_arg(va, double), precision, width, flags);
|
|||
|
2964 .loc 1 760 12 is_stmt 0 view .LVU813
|
|||
|
2965 0428 4628 cmp r0, #70
|
|||
|
2966 042a 18D0 beq .L299
|
|||
|
2967 .L241:
|
|||
|
761:Core/Src/printf.c **** format++;
|
|||
|
2968 .loc 1 761 9 is_stmt 1 view .LVU814
|
|||
|
761:Core/Src/printf.c **** format++;
|
|||
|
2969 .loc 1 761 15 is_stmt 0 view .LVU815
|
|||
|
2970 042c 189B ldr r3, [sp, #96]
|
|||
|
2971 042e 0733 adds r3, r3, #7
|
|||
|
2972 0430 23F00703 bic r3, r3, #7
|
|||
|
2973 0434 03F10802 add r2, r3, #8
|
|||
|
2974 0438 1892 str r2, [sp, #96]
|
|||
|
2975 043a 93ED000B vldr.64 d0, [r3]
|
|||
|
2976 043e 0295 str r5, [sp, #8]
|
|||
|
2977 0440 0A9B ldr r3, [sp, #40]
|
|||
|
2978 0442 0193 str r3, [sp, #4]
|
|||
|
2979 0444 CDF800B0 str fp, [sp]
|
|||
|
2980 0448 3346 mov r3, r6
|
|||
|
2981 044a 2246 mov r2, r4
|
|||
|
2982 044c 4146 mov r1, r8
|
|||
|
2983 044e 3846 mov r0, r7
|
|||
|
2984 0450 FFF7FEFF bl _ftoa
|
|||
|
2985 .LVL299:
|
|||
|
2986 0454 0446 mov r4, r0
|
|||
|
2987 .LVL300:
|
|||
|
762:Core/Src/printf.c **** break;
|
|||
|
2988 .loc 1 762 9 is_stmt 1 view .LVU816
|
|||
|
762:Core/Src/printf.c **** break;
|
|||
|
2989 .loc 1 762 15 is_stmt 0 view .LVU817
|
|||
|
2990 0456 0D9B ldr r3, [sp, #52]
|
|||
|
2991 0458 0133 adds r3, r3, #1
|
|||
|
2992 045a 0D93 str r3, [sp, #52]
|
|||
|
763:Core/Src/printf.c **** #if defined(PRINTF_SUPPORT_EXPONENTIAL)
|
|||
|
2993 .loc 1 763 9 is_stmt 1 view .LVU818
|
|||
|
2994 045c DBE5 b .L265
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 77
|
|||
|
|
|||
|
|
|||
|
2995 .LVL301:
|
|||
|
2996 .L299:
|
|||
|
760:Core/Src/printf.c **** idx = _ftoa(out, buffer, idx, maxlen, va_arg(va, double), precision, width, flags);
|
|||
|
2997 .loc 1 760 29 discriminator 1 view .LVU819
|
|||
|
760:Core/Src/printf.c **** idx = _ftoa(out, buffer, idx, maxlen, va_arg(va, double), precision, width, flags);
|
|||
|
2998 .loc 1 760 35 is_stmt 0 discriminator 1 view .LVU820
|
|||
|
2999 045e 45F02005 orr r5, r5, #32
|
|||
|
3000 .LVL302:
|
|||
|
760:Core/Src/printf.c **** idx = _ftoa(out, buffer, idx, maxlen, va_arg(va, double), precision, width, flags);
|
|||
|
3001 .loc 1 760 35 discriminator 1 view .LVU821
|
|||
|
3002 0462 E3E7 b .L241
|
|||
|
3003 .L220:
|
|||
|
769:Core/Src/printf.c **** if ((*format == 'E')||(*format == 'G')) flags |= FLAGS_UPPERCASE;
|
|||
|
3004 .loc 1 769 9 is_stmt 1 view .LVU822
|
|||
|
769:Core/Src/printf.c **** if ((*format == 'E')||(*format == 'G')) flags |= FLAGS_UPPERCASE;
|
|||
|
3005 .loc 1 769 29 is_stmt 0 view .LVU823
|
|||
|
3006 0464 4728 cmp r0, #71
|
|||
|
3007 0466 14BF ite ne
|
|||
|
3008 0468 0023 movne r3, #0
|
|||
|
3009 046a 0123 moveq r3, #1
|
|||
|
3010 046c 6728 cmp r0, #103
|
|||
|
3011 046e 14BF ite ne
|
|||
|
3012 0470 1A46 movne r2, r3
|
|||
|
3013 0472 43F00102 orreq r2, r3, #1
|
|||
|
769:Core/Src/printf.c **** if ((*format == 'E')||(*format == 'G')) flags |= FLAGS_UPPERCASE;
|
|||
|
3014 .loc 1 769 12 view .LVU824
|
|||
|
3015 0476 0AB1 cbz r2, .L242
|
|||
|
769:Core/Src/printf.c **** if ((*format == 'E')||(*format == 'G')) flags |= FLAGS_UPPERCASE;
|
|||
|
3016 .loc 1 769 49 is_stmt 1 discriminator 1 view .LVU825
|
|||
|
769:Core/Src/printf.c **** if ((*format == 'E')||(*format == 'G')) flags |= FLAGS_UPPERCASE;
|
|||
|
3017 .loc 1 769 55 is_stmt 0 discriminator 1 view .LVU826
|
|||
|
3018 0478 45F40065 orr r5, r5, #2048
|
|||
|
3019 .LVL303:
|
|||
|
3020 .L242:
|
|||
|
770:Core/Src/printf.c **** idx = _etoa(out, buffer, idx, maxlen, va_arg(va, double), precision, width, flags);
|
|||
|
3021 .loc 1 770 9 is_stmt 1 view .LVU827
|
|||
|
770:Core/Src/printf.c **** idx = _etoa(out, buffer, idx, maxlen, va_arg(va, double), precision, width, flags);
|
|||
|
3022 .loc 1 770 29 is_stmt 0 view .LVU828
|
|||
|
3023 047c 4528 cmp r0, #69
|
|||
|
3024 047e 08BF it eq
|
|||
|
3025 0480 43F00103 orreq r3, r3, #1
|
|||
|
770:Core/Src/printf.c **** idx = _etoa(out, buffer, idx, maxlen, va_arg(va, double), precision, width, flags);
|
|||
|
3026 .loc 1 770 12 view .LVU829
|
|||
|
3027 0484 0BB1 cbz r3, .L243
|
|||
|
770:Core/Src/printf.c **** idx = _etoa(out, buffer, idx, maxlen, va_arg(va, double), precision, width, flags);
|
|||
|
3028 .loc 1 770 49 is_stmt 1 discriminator 1 view .LVU830
|
|||
|
770:Core/Src/printf.c **** idx = _etoa(out, buffer, idx, maxlen, va_arg(va, double), precision, width, flags);
|
|||
|
3029 .loc 1 770 55 is_stmt 0 discriminator 1 view .LVU831
|
|||
|
3030 0486 45F02005 orr r5, r5, #32
|
|||
|
3031 .LVL304:
|
|||
|
3032 .L243:
|
|||
|
771:Core/Src/printf.c **** format++;
|
|||
|
3033 .loc 1 771 9 is_stmt 1 view .LVU832
|
|||
|
771:Core/Src/printf.c **** format++;
|
|||
|
3034 .loc 1 771 15 is_stmt 0 view .LVU833
|
|||
|
3035 048a 189B ldr r3, [sp, #96]
|
|||
|
3036 048c 0733 adds r3, r3, #7
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 78
|
|||
|
|
|||
|
|
|||
|
3037 048e 23F00703 bic r3, r3, #7
|
|||
|
3038 0492 03F10802 add r2, r3, #8
|
|||
|
3039 0496 1892 str r2, [sp, #96]
|
|||
|
3040 0498 93ED000B vldr.64 d0, [r3]
|
|||
|
3041 049c 0295 str r5, [sp, #8]
|
|||
|
3042 049e 0A9B ldr r3, [sp, #40]
|
|||
|
3043 04a0 0193 str r3, [sp, #4]
|
|||
|
3044 04a2 CDF800B0 str fp, [sp]
|
|||
|
3045 04a6 3346 mov r3, r6
|
|||
|
3046 04a8 2246 mov r2, r4
|
|||
|
3047 04aa 4146 mov r1, r8
|
|||
|
3048 04ac 3846 mov r0, r7
|
|||
|
3049 04ae FFF7FEFF bl _etoa
|
|||
|
3050 .LVL305:
|
|||
|
3051 04b2 0446 mov r4, r0
|
|||
|
3052 .LVL306:
|
|||
|
772:Core/Src/printf.c **** break;
|
|||
|
3053 .loc 1 772 9 is_stmt 1 view .LVU834
|
|||
|
772:Core/Src/printf.c **** break;
|
|||
|
3054 .loc 1 772 15 is_stmt 0 view .LVU835
|
|||
|
3055 04b4 0D9B ldr r3, [sp, #52]
|
|||
|
3056 04b6 0133 adds r3, r3, #1
|
|||
|
3057 04b8 0D93 str r3, [sp, #52]
|
|||
|
773:Core/Src/printf.c **** #endif // PRINTF_SUPPORT_EXPONENTIAL
|
|||
|
3058 .loc 1 773 9 is_stmt 1 view .LVU836
|
|||
|
3059 04ba ACE5 b .L265
|
|||
|
3060 .LVL307:
|
|||
|
3061 .L222:
|
|||
|
3062 .LBB47:
|
|||
|
777:Core/Src/printf.c **** // pre padding
|
|||
|
3063 .loc 1 777 9 view .LVU837
|
|||
|
779:Core/Src/printf.c **** while (l++ < width) {
|
|||
|
3064 .loc 1 779 9 view .LVU838
|
|||
|
779:Core/Src/printf.c **** while (l++ < width) {
|
|||
|
3065 .loc 1 779 12 is_stmt 0 view .LVU839
|
|||
|
3066 04bc 15F00205 ands r5, r5, #2
|
|||
|
3067 .LVL308:
|
|||
|
779:Core/Src/printf.c **** while (l++ < width) {
|
|||
|
3068 .loc 1 779 12 view .LVU840
|
|||
|
3069 04c0 1FD0 beq .L277
|
|||
|
777:Core/Src/printf.c **** // pre padding
|
|||
|
3070 .loc 1 777 22 view .LVU841
|
|||
|
3071 04c2 4FF00109 mov r9, #1
|
|||
|
3072 .LVL309:
|
|||
|
3073 .L245:
|
|||
|
785:Core/Src/printf.c **** // post padding
|
|||
|
3074 .loc 1 785 9 is_stmt 1 view .LVU842
|
|||
|
785:Core/Src/printf.c **** // post padding
|
|||
|
3075 .loc 1 785 19 is_stmt 0 view .LVU843
|
|||
|
3076 04c6 1898 ldr r0, [sp, #96]
|
|||
|
3077 04c8 031D adds r3, r0, #4
|
|||
|
3078 04ca 1893 str r3, [sp, #96]
|
|||
|
785:Core/Src/printf.c **** // post padding
|
|||
|
3079 .loc 1 785 9 view .LVU844
|
|||
|
3080 04cc 04F1010A add r10, r4, #1
|
|||
|
3081 .LVL310:
|
|||
|
785:Core/Src/printf.c **** // post padding
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 79
|
|||
|
|
|||
|
|
|||
|
3082 .loc 1 785 9 view .LVU845
|
|||
|
3083 04d0 3346 mov r3, r6
|
|||
|
3084 04d2 2246 mov r2, r4
|
|||
|
3085 04d4 4146 mov r1, r8
|
|||
|
3086 04d6 0078 ldrb r0, [r0] @ zero_extendqisi2
|
|||
|
3087 04d8 B847 blx r7
|
|||
|
3088 .LVL311:
|
|||
|
787:Core/Src/printf.c **** while (l++ < width) {
|
|||
|
3089 .loc 1 787 9 is_stmt 1 view .LVU846
|
|||
|
787:Core/Src/printf.c **** while (l++ < width) {
|
|||
|
3090 .loc 1 787 12 is_stmt 0 view .LVU847
|
|||
|
3091 04da BDB9 cbnz r5, .L300
|
|||
|
3092 .LVL312:
|
|||
|
3093 .L248:
|
|||
|
792:Core/Src/printf.c **** break;
|
|||
|
3094 .loc 1 792 9 is_stmt 1 view .LVU848
|
|||
|
792:Core/Src/printf.c **** break;
|
|||
|
3095 .loc 1 792 15 is_stmt 0 view .LVU849
|
|||
|
3096 04dc 0D9B ldr r3, [sp, #52]
|
|||
|
3097 04de 0133 adds r3, r3, #1
|
|||
|
3098 04e0 0D93 str r3, [sp, #52]
|
|||
|
3099 .loc 1 793 9 is_stmt 1 view .LVU850
|
|||
|
3100 04e2 5446 mov r4, r10
|
|||
|
3101 04e4 97E5 b .L265
|
|||
|
3102 .LVL313:
|
|||
|
3103 .L246:
|
|||
|
781:Core/Src/printf.c **** }
|
|||
|
3104 .loc 1 781 13 view .LVU851
|
|||
|
3105 04e6 02F1010A add r10, r2, #1
|
|||
|
3106 .LVL314:
|
|||
|
781:Core/Src/printf.c **** }
|
|||
|
3107 .loc 1 781 13 is_stmt 0 view .LVU852
|
|||
|
3108 04ea 3346 mov r3, r6
|
|||
|
3109 04ec 4146 mov r1, r8
|
|||
|
3110 04ee 2020 movs r0, #32
|
|||
|
3111 04f0 B847 blx r7
|
|||
|
3112 .LVL315:
|
|||
|
780:Core/Src/printf.c **** out(' ', buffer, idx++, maxlen);
|
|||
|
3113 .loc 1 780 19 view .LVU853
|
|||
|
3114 04f2 4B46 mov r3, r9
|
|||
|
781:Core/Src/printf.c **** }
|
|||
|
3115 .loc 1 781 13 view .LVU854
|
|||
|
3116 04f4 5246 mov r2, r10
|
|||
|
3117 .LVL316:
|
|||
|
3118 .L244:
|
|||
|
780:Core/Src/printf.c **** out(' ', buffer, idx++, maxlen);
|
|||
|
3119 .loc 1 780 17 is_stmt 1 view .LVU855
|
|||
|
780:Core/Src/printf.c **** out(' ', buffer, idx++, maxlen);
|
|||
|
3120 .loc 1 780 19 is_stmt 0 view .LVU856
|
|||
|
3121 04f6 03F10109 add r9, r3, #1
|
|||
|
3122 .LVL317:
|
|||
|
780:Core/Src/printf.c **** out(' ', buffer, idx++, maxlen);
|
|||
|
3123 .loc 1 780 17 view .LVU857
|
|||
|
3124 04fa 9B45 cmp fp, r3
|
|||
|
3125 04fc F3D8 bhi .L246
|
|||
|
780:Core/Src/printf.c **** out(' ', buffer, idx++, maxlen);
|
|||
|
3126 .loc 1 780 17 view .LVU858
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 80
|
|||
|
|
|||
|
|
|||
|
3127 04fe 1446 mov r4, r2
|
|||
|
3128 0500 E1E7 b .L245
|
|||
|
3129 .LVL318:
|
|||
|
3130 .L277:
|
|||
|
777:Core/Src/printf.c **** // pre padding
|
|||
|
3131 .loc 1 777 22 view .LVU859
|
|||
|
3132 0502 0123 movs r3, #1
|
|||
|
3133 0504 DDF828B0 ldr fp, [sp, #40]
|
|||
|
3134 .LVL319:
|
|||
|
777:Core/Src/printf.c **** // pre padding
|
|||
|
3135 .loc 1 777 22 view .LVU860
|
|||
|
3136 0508 2246 mov r2, r4
|
|||
|
3137 050a F4E7 b .L244
|
|||
|
3138 .LVL320:
|
|||
|
3139 .L300:
|
|||
|
777:Core/Src/printf.c **** // pre padding
|
|||
|
3140 .loc 1 777 22 view .LVU861
|
|||
|
3141 050c 5246 mov r2, r10
|
|||
|
3142 050e DDF828A0 ldr r10, [sp, #40]
|
|||
|
3143 .LVL321:
|
|||
|
777:Core/Src/printf.c **** // pre padding
|
|||
|
3144 .loc 1 777 22 view .LVU862
|
|||
|
3145 0512 06E0 b .L247
|
|||
|
3146 .LVL322:
|
|||
|
3147 .L249:
|
|||
|
789:Core/Src/printf.c **** }
|
|||
|
3148 .loc 1 789 13 is_stmt 1 view .LVU863
|
|||
|
3149 0514 551C adds r5, r2, #1
|
|||
|
3150 .LVL323:
|
|||
|
789:Core/Src/printf.c **** }
|
|||
|
3151 .loc 1 789 13 is_stmt 0 view .LVU864
|
|||
|
3152 0516 3346 mov r3, r6
|
|||
|
3153 0518 4146 mov r1, r8
|
|||
|
3154 051a 2020 movs r0, #32
|
|||
|
3155 051c B847 blx r7
|
|||
|
3156 .LVL324:
|
|||
|
788:Core/Src/printf.c **** out(' ', buffer, idx++, maxlen);
|
|||
|
3157 .loc 1 788 19 view .LVU865
|
|||
|
3158 051e A146 mov r9, r4
|
|||
|
789:Core/Src/printf.c **** }
|
|||
|
3159 .loc 1 789 13 view .LVU866
|
|||
|
3160 0520 2A46 mov r2, r5
|
|||
|
3161 .LVL325:
|
|||
|
3162 .L247:
|
|||
|
788:Core/Src/printf.c **** out(' ', buffer, idx++, maxlen);
|
|||
|
3163 .loc 1 788 17 is_stmt 1 view .LVU867
|
|||
|
788:Core/Src/printf.c **** out(' ', buffer, idx++, maxlen);
|
|||
|
3164 .loc 1 788 19 is_stmt 0 view .LVU868
|
|||
|
3165 0522 09F10104 add r4, r9, #1
|
|||
|
3166 .LVL326:
|
|||
|
788:Core/Src/printf.c **** out(' ', buffer, idx++, maxlen);
|
|||
|
3167 .loc 1 788 17 view .LVU869
|
|||
|
3168 0526 CA45 cmp r10, r9
|
|||
|
3169 0528 F4D8 bhi .L249
|
|||
|
788:Core/Src/printf.c **** out(' ', buffer, idx++, maxlen);
|
|||
|
3170 .loc 1 788 17 view .LVU870
|
|||
|
3171 052a 9246 mov r10, r2
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 81
|
|||
|
|
|||
|
|
|||
|
3172 052c D6E7 b .L248
|
|||
|
3173 .LVL327:
|
|||
|
3174 .L218:
|
|||
|
788:Core/Src/printf.c **** out(' ', buffer, idx++, maxlen);
|
|||
|
3175 .loc 1 788 17 view .LVU871
|
|||
|
3176 .LBE47:
|
|||
|
3177 .LBB48:
|
|||
|
794:Core/Src/printf.c **** }
|
|||
|
795:Core/Src/printf.c ****
|
|||
|
796:Core/Src/printf.c **** case 's' : {
|
|||
|
797:Core/Src/printf.c **** const char* p = va_arg(va, char*);
|
|||
|
3178 .loc 1 797 9 is_stmt 1 view .LVU872
|
|||
|
3179 .loc 1 797 21 is_stmt 0 view .LVU873
|
|||
|
3180 052e 189B ldr r3, [sp, #96]
|
|||
|
3181 0530 1A1D adds r2, r3, #4
|
|||
|
3182 0532 1892 str r2, [sp, #96]
|
|||
|
3183 0534 D3F800A0 ldr r10, [r3]
|
|||
|
798:Core/Src/printf.c **** unsigned int l = _strnlen_s(p, precision ? precision : (size_t)-1);
|
|||
|
3184 .loc 1 798 9 is_stmt 1 view .LVU874
|
|||
|
3185 .loc 1 798 26 is_stmt 0 view .LVU875
|
|||
|
3186 0538 BBF1000F cmp fp, #0
|
|||
|
3187 053c 1ED1 bne .L250
|
|||
|
3188 053e 4FF0FF33 mov r3, #-1
|
|||
|
3189 .L251:
|
|||
|
3190 0542 D146 mov r9, r10
|
|||
|
3191 0544 02E0 b .L252
|
|||
|
3192 .LVL328:
|
|||
|
3193 .L254:
|
|||
|
3194 .LBB49:
|
|||
|
3195 .LBB50:
|
|||
|
174:Core/Src/printf.c **** return (unsigned int)(s - str);
|
|||
|
3196 .loc 1 174 38 is_stmt 1 view .LVU876
|
|||
|
174:Core/Src/printf.c **** return (unsigned int)(s - str);
|
|||
|
3197 .loc 1 174 34 view .LVU877
|
|||
|
3198 0546 09F10109 add r9, r9, #1
|
|||
|
3199 .LVL329:
|
|||
|
174:Core/Src/printf.c **** return (unsigned int)(s - str);
|
|||
|
3200 .loc 1 174 30 is_stmt 0 view .LVU878
|
|||
|
3201 054a 1346 mov r3, r2
|
|||
|
3202 .LVL330:
|
|||
|
3203 .L252:
|
|||
|
174:Core/Src/printf.c **** return (unsigned int)(s - str);
|
|||
|
3204 .loc 1 174 17 is_stmt 1 view .LVU879
|
|||
|
3205 054c 99F80020 ldrb r2, [r9] @ zero_extendqisi2
|
|||
|
174:Core/Src/printf.c **** return (unsigned int)(s - str);
|
|||
|
3206 .loc 1 174 3 is_stmt 0 view .LVU880
|
|||
|
3207 0550 12B1 cbz r2, .L253
|
|||
|
174:Core/Src/printf.c **** return (unsigned int)(s - str);
|
|||
|
3208 .loc 1 174 30 view .LVU881
|
|||
|
3209 0552 5A1E subs r2, r3, #1
|
|||
|
3210 .LVL331:
|
|||
|
174:Core/Src/printf.c **** return (unsigned int)(s - str);
|
|||
|
3211 .loc 1 174 20 view .LVU882
|
|||
|
3212 0554 002B cmp r3, #0
|
|||
|
3213 0556 F6D1 bne .L254
|
|||
|
3214 .LVL332:
|
|||
|
3215 .L253:
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 82
|
|||
|
|
|||
|
|
|||
|
175:Core/Src/printf.c **** }
|
|||
|
3216 .loc 1 175 3 is_stmt 1 view .LVU883
|
|||
|
175:Core/Src/printf.c **** }
|
|||
|
3217 .loc 1 175 27 is_stmt 0 view .LVU884
|
|||
|
3218 0558 A9EB0A09 sub r9, r9, r10
|
|||
|
3219 .LVL333:
|
|||
|
175:Core/Src/printf.c **** }
|
|||
|
3220 .loc 1 175 27 view .LVU885
|
|||
|
3221 .LBE50:
|
|||
|
3222 .LBE49:
|
|||
|
799:Core/Src/printf.c **** // pre padding
|
|||
|
800:Core/Src/printf.c **** if (flags & FLAGS_PRECISION) {
|
|||
|
3223 .loc 1 800 9 is_stmt 1 view .LVU886
|
|||
|
3224 .loc 1 800 12 is_stmt 0 view .LVU887
|
|||
|
3225 055c 15F48063 ands r3, r5, #1024
|
|||
|
3226 0560 0B93 str r3, [sp, #44]
|
|||
|
3227 0562 02D0 beq .L255
|
|||
|
801:Core/Src/printf.c **** l = (l < precision ? l : precision);
|
|||
|
3228 .loc 1 801 11 is_stmt 1 view .LVU888
|
|||
|
3229 .loc 1 801 13 is_stmt 0 view .LVU889
|
|||
|
3230 0564 D945 cmp r9, fp
|
|||
|
3231 0566 28BF it cs
|
|||
|
3232 0568 D946 movcs r9, fp
|
|||
|
3233 .LVL334:
|
|||
|
3234 .L255:
|
|||
|
802:Core/Src/printf.c **** }
|
|||
|
803:Core/Src/printf.c **** if (!(flags & FLAGS_LEFT)) {
|
|||
|
3235 .loc 1 803 9 is_stmt 1 view .LVU890
|
|||
|
3236 .loc 1 803 12 is_stmt 0 view .LVU891
|
|||
|
3237 056a 15F00203 ands r3, r5, #2
|
|||
|
3238 056e 0C93 str r3, [sp, #48]
|
|||
|
3239 0570 06D0 beq .L301
|
|||
|
3240 .loc 1 803 12 view .LVU892
|
|||
|
3241 0572 2246 mov r2, r4
|
|||
|
3242 0574 5C46 mov r4, fp
|
|||
|
3243 .LVL335:
|
|||
|
3244 .loc 1 803 12 view .LVU893
|
|||
|
3245 0576 B346 mov fp, r6
|
|||
|
3246 .LVL336:
|
|||
|
3247 .loc 1 803 12 view .LVU894
|
|||
|
3248 0578 0B9E ldr r6, [sp, #44]
|
|||
|
3249 .LVL337:
|
|||
|
3250 .loc 1 803 12 view .LVU895
|
|||
|
3251 057a 1DE0 b .L259
|
|||
|
3252 .LVL338:
|
|||
|
3253 .L250:
|
|||
|
798:Core/Src/printf.c **** // pre padding
|
|||
|
3254 .loc 1 798 26 view .LVU896
|
|||
|
3255 057c 5B46 mov r3, fp
|
|||
|
3256 057e E0E7 b .L251
|
|||
|
3257 .LVL339:
|
|||
|
3258 .L301:
|
|||
|
798:Core/Src/printf.c **** // pre padding
|
|||
|
3259 .loc 1 798 26 view .LVU897
|
|||
|
3260 0580 2246 mov r2, r4
|
|||
|
3261 0582 0A9C ldr r4, [sp, #40]
|
|||
|
3262 .LVL340:
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 83
|
|||
|
|
|||
|
|
|||
|
798:Core/Src/printf.c **** // pre padding
|
|||
|
3263 .loc 1 798 26 view .LVU898
|
|||
|
3264 0584 4B46 mov r3, r9
|
|||
|
3265 0586 07E0 b .L256
|
|||
|
3266 .LVL341:
|
|||
|
3267 .L258:
|
|||
|
804:Core/Src/printf.c **** while (l++ < width) {
|
|||
|
805:Core/Src/printf.c **** out(' ', buffer, idx++, maxlen);
|
|||
|
3268 .loc 1 805 13 is_stmt 1 view .LVU899
|
|||
|
3269 0588 02F10109 add r9, r2, #1
|
|||
|
3270 .LVL342:
|
|||
|
3271 .loc 1 805 13 is_stmt 0 view .LVU900
|
|||
|
3272 058c 3346 mov r3, r6
|
|||
|
3273 058e 4146 mov r1, r8
|
|||
|
3274 0590 2020 movs r0, #32
|
|||
|
3275 0592 B847 blx r7
|
|||
|
3276 .LVL343:
|
|||
|
804:Core/Src/printf.c **** while (l++ < width) {
|
|||
|
3277 .loc 1 804 19 view .LVU901
|
|||
|
3278 0594 2B46 mov r3, r5
|
|||
|
3279 .loc 1 805 13 view .LVU902
|
|||
|
3280 0596 4A46 mov r2, r9
|
|||
|
3281 .LVL344:
|
|||
|
3282 .L256:
|
|||
|
804:Core/Src/printf.c **** while (l++ < width) {
|
|||
|
3283 .loc 1 804 17 is_stmt 1 view .LVU903
|
|||
|
804:Core/Src/printf.c **** while (l++ < width) {
|
|||
|
3284 .loc 1 804 19 is_stmt 0 view .LVU904
|
|||
|
3285 0598 5D1C adds r5, r3, #1
|
|||
|
3286 .LVL345:
|
|||
|
804:Core/Src/printf.c **** while (l++ < width) {
|
|||
|
3287 .loc 1 804 17 view .LVU905
|
|||
|
3288 059a 9C42 cmp r4, r3
|
|||
|
3289 059c F4D8 bhi .L258
|
|||
|
804:Core/Src/printf.c **** while (l++ < width) {
|
|||
|
3290 .loc 1 804 19 view .LVU906
|
|||
|
3291 059e A946 mov r9, r5
|
|||
|
3292 05a0 5C46 mov r4, fp
|
|||
|
3293 05a2 B346 mov fp, r6
|
|||
|
3294 .LVL346:
|
|||
|
804:Core/Src/printf.c **** while (l++ < width) {
|
|||
|
3295 .loc 1 804 19 view .LVU907
|
|||
|
3296 05a4 0B9E ldr r6, [sp, #44]
|
|||
|
3297 .LVL347:
|
|||
|
804:Core/Src/printf.c **** while (l++ < width) {
|
|||
|
3298 .loc 1 804 19 view .LVU908
|
|||
|
3299 05a6 07E0 b .L259
|
|||
|
3300 .LVL348:
|
|||
|
3301 .L278:
|
|||
|
806:Core/Src/printf.c **** }
|
|||
|
807:Core/Src/printf.c **** }
|
|||
|
808:Core/Src/printf.c **** // string output
|
|||
|
809:Core/Src/printf.c **** while ((*p != 0) && (!(flags & FLAGS_PRECISION) || precision--)) {
|
|||
|
3302 .loc 1 809 69 view .LVU909
|
|||
|
3303 05a8 1C46 mov r4, r3
|
|||
|
3304 .LVL349:
|
|||
|
3305 .L261:
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 84
|
|||
|
|
|||
|
|
|||
|
810:Core/Src/printf.c **** out(*(p++), buffer, idx++, maxlen);
|
|||
|
3306 .loc 1 810 11 is_stmt 1 view .LVU910
|
|||
|
3307 .loc 1 810 18 is_stmt 0 view .LVU911
|
|||
|
3308 05aa 0AF1010A add r10, r10, #1
|
|||
|
3309 .LVL350:
|
|||
|
3310 .loc 1 810 11 view .LVU912
|
|||
|
3311 05ae 551C adds r5, r2, #1
|
|||
|
3312 .LVL351:
|
|||
|
3313 .loc 1 810 11 view .LVU913
|
|||
|
3314 05b0 5B46 mov r3, fp
|
|||
|
3315 05b2 4146 mov r1, r8
|
|||
|
3316 05b4 B847 blx r7
|
|||
|
3317 .LVL352:
|
|||
|
3318 05b6 2A46 mov r2, r5
|
|||
|
3319 .LVL353:
|
|||
|
3320 .L259:
|
|||
|
809:Core/Src/printf.c **** out(*(p++), buffer, idx++, maxlen);
|
|||
|
3321 .loc 1 809 15 is_stmt 1 view .LVU914
|
|||
|
809:Core/Src/printf.c **** out(*(p++), buffer, idx++, maxlen);
|
|||
|
3322 .loc 1 809 17 is_stmt 0 view .LVU915
|
|||
|
3323 05b8 9AF80000 ldrb r0, [r10] @ zero_extendqisi2
|
|||
|
809:Core/Src/printf.c **** out(*(p++), buffer, idx++, maxlen);
|
|||
|
3324 .loc 1 809 15 view .LVU916
|
|||
|
3325 05bc 20B1 cbz r0, .L260
|
|||
|
809:Core/Src/printf.c **** out(*(p++), buffer, idx++, maxlen);
|
|||
|
3326 .loc 1 809 26 discriminator 1 view .LVU917
|
|||
|
3327 05be 002E cmp r6, #0
|
|||
|
3328 05c0 F3D0 beq .L261
|
|||
|
809:Core/Src/printf.c **** out(*(p++), buffer, idx++, maxlen);
|
|||
|
3329 .loc 1 809 69 discriminator 2 view .LVU918
|
|||
|
3330 05c2 631E subs r3, r4, #1
|
|||
|
3331 .LVL354:
|
|||
|
809:Core/Src/printf.c **** out(*(p++), buffer, idx++, maxlen);
|
|||
|
3332 .loc 1 809 57 discriminator 2 view .LVU919
|
|||
|
3333 05c4 002C cmp r4, #0
|
|||
|
3334 05c6 EFD1 bne .L278
|
|||
|
3335 .LVL355:
|
|||
|
3336 .L260:
|
|||
|
811:Core/Src/printf.c **** }
|
|||
|
812:Core/Src/printf.c **** // post padding
|
|||
|
813:Core/Src/printf.c **** if (flags & FLAGS_LEFT) {
|
|||
|
3337 .loc 1 813 12 view .LVU920
|
|||
|
3338 05c8 1446 mov r4, r2
|
|||
|
3339 05ca 5E46 mov r6, fp
|
|||
|
3340 .loc 1 813 9 is_stmt 1 view .LVU921
|
|||
|
3341 .loc 1 813 12 is_stmt 0 view .LVU922
|
|||
|
3342 05cc 0C9B ldr r3, [sp, #48]
|
|||
|
3343 05ce 1BB9 cbnz r3, .L302
|
|||
|
3344 .LVL356:
|
|||
|
3345 .L263:
|
|||
|
814:Core/Src/printf.c **** while (l++ < width) {
|
|||
|
815:Core/Src/printf.c **** out(' ', buffer, idx++, maxlen);
|
|||
|
816:Core/Src/printf.c **** }
|
|||
|
817:Core/Src/printf.c **** }
|
|||
|
818:Core/Src/printf.c **** format++;
|
|||
|
3346 .loc 1 818 9 is_stmt 1 view .LVU923
|
|||
|
3347 .loc 1 818 15 is_stmt 0 view .LVU924
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 85
|
|||
|
|
|||
|
|
|||
|
3348 05d0 0D9B ldr r3, [sp, #52]
|
|||
|
3349 05d2 0133 adds r3, r3, #1
|
|||
|
3350 05d4 0D93 str r3, [sp, #52]
|
|||
|
819:Core/Src/printf.c **** break;
|
|||
|
3351 .loc 1 819 9 is_stmt 1 view .LVU925
|
|||
|
3352 05d6 1EE5 b .L265
|
|||
|
3353 .LVL357:
|
|||
|
3354 .L302:
|
|||
|
3355 .loc 1 819 9 is_stmt 0 view .LVU926
|
|||
|
3356 05d8 DDF828A0 ldr r10, [sp, #40]
|
|||
|
3357 .LVL358:
|
|||
|
3358 .loc 1 819 9 view .LVU927
|
|||
|
3359 05dc 06E0 b .L262
|
|||
|
3360 .LVL359:
|
|||
|
3361 .L264:
|
|||
|
815:Core/Src/printf.c **** }
|
|||
|
3362 .loc 1 815 13 is_stmt 1 view .LVU928
|
|||
|
3363 05de 551C adds r5, r2, #1
|
|||
|
3364 .LVL360:
|
|||
|
815:Core/Src/printf.c **** }
|
|||
|
3365 .loc 1 815 13 is_stmt 0 view .LVU929
|
|||
|
3366 05e0 3346 mov r3, r6
|
|||
|
3367 05e2 4146 mov r1, r8
|
|||
|
3368 05e4 2020 movs r0, #32
|
|||
|
3369 05e6 B847 blx r7
|
|||
|
3370 .LVL361:
|
|||
|
814:Core/Src/printf.c **** while (l++ < width) {
|
|||
|
3371 .loc 1 814 19 view .LVU930
|
|||
|
3372 05e8 A146 mov r9, r4
|
|||
|
815:Core/Src/printf.c **** }
|
|||
|
3373 .loc 1 815 13 view .LVU931
|
|||
|
3374 05ea 2A46 mov r2, r5
|
|||
|
3375 .LVL362:
|
|||
|
3376 .L262:
|
|||
|
814:Core/Src/printf.c **** while (l++ < width) {
|
|||
|
3377 .loc 1 814 17 is_stmt 1 view .LVU932
|
|||
|
814:Core/Src/printf.c **** while (l++ < width) {
|
|||
|
3378 .loc 1 814 19 is_stmt 0 view .LVU933
|
|||
|
3379 05ec 09F10104 add r4, r9, #1
|
|||
|
3380 .LVL363:
|
|||
|
814:Core/Src/printf.c **** while (l++ < width) {
|
|||
|
3381 .loc 1 814 17 view .LVU934
|
|||
|
3382 05f0 CA45 cmp r10, r9
|
|||
|
3383 05f2 F4D8 bhi .L264
|
|||
|
814:Core/Src/printf.c **** while (l++ < width) {
|
|||
|
3384 .loc 1 814 17 view .LVU935
|
|||
|
3385 05f4 1446 mov r4, r2
|
|||
|
3386 .LVL364:
|
|||
|
814:Core/Src/printf.c **** while (l++ < width) {
|
|||
|
3387 .loc 1 814 17 view .LVU936
|
|||
|
3388 05f6 EBE7 b .L263
|
|||
|
3389 .LVL365:
|
|||
|
3390 .L219:
|
|||
|
814:Core/Src/printf.c **** while (l++ < width) {
|
|||
|
3391 .loc 1 814 17 view .LVU937
|
|||
|
3392 .LBE48:
|
|||
|
3393 .LBB51:
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 86
|
|||
|
|
|||
|
|
|||
|
820:Core/Src/printf.c **** }
|
|||
|
821:Core/Src/printf.c ****
|
|||
|
822:Core/Src/printf.c **** case 'p' : {
|
|||
|
823:Core/Src/printf.c **** width = sizeof(void*) * 2U;
|
|||
|
3394 .loc 1 823 9 is_stmt 1 view .LVU938
|
|||
|
824:Core/Src/printf.c **** flags |= FLAGS_ZEROPAD | FLAGS_UPPERCASE;
|
|||
|
3395 .loc 1 824 9 view .LVU939
|
|||
|
3396 .loc 1 824 15 is_stmt 0 view .LVU940
|
|||
|
3397 05f8 45F02105 orr r5, r5, #33
|
|||
|
3398 .LVL366:
|
|||
|
825:Core/Src/printf.c **** #if defined(PRINTF_SUPPORT_LONG_LONG)
|
|||
|
826:Core/Src/printf.c **** const bool is_ll = sizeof(uintptr_t) == sizeof(long long);
|
|||
|
3399 .loc 1 826 9 is_stmt 1 view .LVU941
|
|||
|
827:Core/Src/printf.c **** if (is_ll) {
|
|||
|
3400 .loc 1 827 9 view .LVU942
|
|||
|
828:Core/Src/printf.c **** idx = _ntoa_long_long(out, buffer, idx, maxlen, (uintptr_t)va_arg(va, void*), false, 16U,
|
|||
|
829:Core/Src/printf.c **** }
|
|||
|
830:Core/Src/printf.c **** else {
|
|||
|
831:Core/Src/printf.c **** #endif
|
|||
|
832:Core/Src/printf.c **** idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned long)((uintptr_t)va_arg(va, void*)),
|
|||
|
3401 .loc 1 832 11 view .LVU943
|
|||
|
3402 .loc 1 832 81 is_stmt 0 view .LVU944
|
|||
|
3403 05fc 189B ldr r3, [sp, #96]
|
|||
|
3404 05fe 1A1D adds r2, r3, #4
|
|||
|
3405 0600 1892 str r2, [sp, #96]
|
|||
|
3406 0602 1B68 ldr r3, [r3]
|
|||
|
3407 .loc 1 832 17 view .LVU945
|
|||
|
3408 0604 0595 str r5, [sp, #20]
|
|||
|
3409 0606 0822 movs r2, #8
|
|||
|
3410 0608 0492 str r2, [sp, #16]
|
|||
|
3411 060a CDF80CB0 str fp, [sp, #12]
|
|||
|
3412 060e 1022 movs r2, #16
|
|||
|
3413 0610 0292 str r2, [sp, #8]
|
|||
|
3414 0612 0022 movs r2, #0
|
|||
|
3415 0614 0192 str r2, [sp, #4]
|
|||
|
3416 0616 0093 str r3, [sp]
|
|||
|
3417 0618 3346 mov r3, r6
|
|||
|
3418 061a 2246 mov r2, r4
|
|||
|
3419 061c 4146 mov r1, r8
|
|||
|
3420 061e 3846 mov r0, r7
|
|||
|
3421 0620 FFF7FEFF bl _ntoa_long
|
|||
|
3422 .LVL367:
|
|||
|
3423 0624 0446 mov r4, r0
|
|||
|
3424 .LVL368:
|
|||
|
833:Core/Src/printf.c **** #if defined(PRINTF_SUPPORT_LONG_LONG)
|
|||
|
834:Core/Src/printf.c **** }
|
|||
|
835:Core/Src/printf.c **** #endif
|
|||
|
836:Core/Src/printf.c **** format++;
|
|||
|
3425 .loc 1 836 9 is_stmt 1 view .LVU946
|
|||
|
3426 .loc 1 836 15 is_stmt 0 view .LVU947
|
|||
|
3427 0626 0D9B ldr r3, [sp, #52]
|
|||
|
3428 0628 0133 adds r3, r3, #1
|
|||
|
3429 062a 0D93 str r3, [sp, #52]
|
|||
|
837:Core/Src/printf.c **** break;
|
|||
|
3430 .loc 1 837 9 is_stmt 1 view .LVU948
|
|||
|
3431 062c F3E4 b .L265
|
|||
|
3432 .LVL369:
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 87
|
|||
|
|
|||
|
|
|||
|
3433 .L223:
|
|||
|
3434 .loc 1 837 9 is_stmt 0 view .LVU949
|
|||
|
3435 .LBE51:
|
|||
|
838:Core/Src/printf.c **** }
|
|||
|
839:Core/Src/printf.c ****
|
|||
|
840:Core/Src/printf.c **** case '%' :
|
|||
|
841:Core/Src/printf.c **** out('%', buffer, idx++, maxlen);
|
|||
|
3436 .loc 1 841 9 is_stmt 1 view .LVU950
|
|||
|
3437 062e 651C adds r5, r4, #1
|
|||
|
3438 .LVL370:
|
|||
|
3439 .loc 1 841 9 is_stmt 0 view .LVU951
|
|||
|
3440 0630 3346 mov r3, r6
|
|||
|
3441 0632 2246 mov r2, r4
|
|||
|
3442 0634 4146 mov r1, r8
|
|||
|
3443 0636 2520 movs r0, #37
|
|||
|
3444 0638 B847 blx r7
|
|||
|
3445 .LVL371:
|
|||
|
842:Core/Src/printf.c **** format++;
|
|||
|
3446 .loc 1 842 9 is_stmt 1 view .LVU952
|
|||
|
3447 .loc 1 842 15 is_stmt 0 view .LVU953
|
|||
|
3448 063a 0D9B ldr r3, [sp, #52]
|
|||
|
3449 063c 0133 adds r3, r3, #1
|
|||
|
3450 063e 0D93 str r3, [sp, #52]
|
|||
|
843:Core/Src/printf.c **** break;
|
|||
|
3451 .loc 1 843 9 is_stmt 1 view .LVU954
|
|||
|
841:Core/Src/printf.c **** format++;
|
|||
|
3452 .loc 1 841 9 is_stmt 0 view .LVU955
|
|||
|
3453 0640 2C46 mov r4, r5
|
|||
|
3454 .loc 1 843 9 view .LVU956
|
|||
|
3455 0642 E8E4 b .L265
|
|||
|
3456 .LVL372:
|
|||
|
3457 .L215:
|
|||
|
844:Core/Src/printf.c ****
|
|||
|
845:Core/Src/printf.c **** default :
|
|||
|
846:Core/Src/printf.c **** out(*format, buffer, idx++, maxlen);
|
|||
|
3458 .loc 1 846 9 is_stmt 1 view .LVU957
|
|||
|
3459 0644 651C adds r5, r4, #1
|
|||
|
3460 .LVL373:
|
|||
|
3461 .loc 1 846 9 is_stmt 0 view .LVU958
|
|||
|
3462 0646 3346 mov r3, r6
|
|||
|
3463 0648 2246 mov r2, r4
|
|||
|
3464 064a 4146 mov r1, r8
|
|||
|
3465 064c B847 blx r7
|
|||
|
3466 .LVL374:
|
|||
|
847:Core/Src/printf.c **** format++;
|
|||
|
3467 .loc 1 847 9 is_stmt 1 view .LVU959
|
|||
|
3468 .loc 1 847 15 is_stmt 0 view .LVU960
|
|||
|
3469 064e 0D9B ldr r3, [sp, #52]
|
|||
|
3470 0650 0133 adds r3, r3, #1
|
|||
|
3471 0652 0D93 str r3, [sp, #52]
|
|||
|
848:Core/Src/printf.c **** break;
|
|||
|
3472 .loc 1 848 9 is_stmt 1 view .LVU961
|
|||
|
846:Core/Src/printf.c **** format++;
|
|||
|
3473 .loc 1 846 9 is_stmt 0 view .LVU962
|
|||
|
3474 0654 2C46 mov r4, r5
|
|||
|
3475 .loc 1 848 9 view .LVU963
|
|||
|
3476 0656 DEE4 b .L265
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 88
|
|||
|
|
|||
|
|
|||
|
3477 .LVL375:
|
|||
|
3478 .L283:
|
|||
|
584:Core/Src/printf.c **** }
|
|||
|
3479 .loc 1 584 9 view .LVU964
|
|||
|
3480 0658 074F ldr r7, .L303
|
|||
|
3481 065a DBE4 b .L188
|
|||
|
3482 .LVL376:
|
|||
|
3483 .L284:
|
|||
|
849:Core/Src/printf.c **** }
|
|||
|
850:Core/Src/printf.c **** }
|
|||
|
851:Core/Src/printf.c ****
|
|||
|
852:Core/Src/printf.c **** // termination
|
|||
|
853:Core/Src/printf.c **** out((char)0, buffer, idx < maxlen ? idx : maxlen - 1U, maxlen);
|
|||
|
3484 .loc 1 853 3 is_stmt 1 view .LVU965
|
|||
|
3485 065c B442 cmp r4, r6
|
|||
|
3486 065e 01D3 bcc .L279
|
|||
|
3487 .loc 1 853 3 is_stmt 0 discriminator 1 view .LVU966
|
|||
|
3488 0660 721E subs r2, r6, #1
|
|||
|
3489 0662 00E0 b .L267
|
|||
|
3490 .L279:
|
|||
|
3491 .loc 1 853 3 view .LVU967
|
|||
|
3492 0664 2246 mov r2, r4
|
|||
|
3493 .L267:
|
|||
|
3494 .loc 1 853 3 discriminator 4 view .LVU968
|
|||
|
3495 0666 3346 mov r3, r6
|
|||
|
3496 0668 4146 mov r1, r8
|
|||
|
3497 066a 0020 movs r0, #0
|
|||
|
3498 066c B847 blx r7
|
|||
|
3499 .LVL377:
|
|||
|
854:Core/Src/printf.c ****
|
|||
|
855:Core/Src/printf.c **** // return written chars without terminating \0
|
|||
|
856:Core/Src/printf.c **** return (int)idx;
|
|||
|
3500 .loc 1 856 3 is_stmt 1 discriminator 4 view .LVU969
|
|||
|
857:Core/Src/printf.c **** }
|
|||
|
3501 .loc 1 857 1 is_stmt 0 discriminator 4 view .LVU970
|
|||
|
3502 066e 2046 mov r0, r4
|
|||
|
3503 0670 0FB0 add sp, sp, #60
|
|||
|
3504 .LCFI26:
|
|||
|
3505 .cfi_def_cfa_offset 36
|
|||
|
3506 @ sp needed
|
|||
|
3507 0672 BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|||
|
3508 .LVL378:
|
|||
|
3509 .L304:
|
|||
|
3510 .loc 1 857 1 discriminator 4 view .LVU971
|
|||
|
3511 0676 00BF .align 2
|
|||
|
3512 .L303:
|
|||
|
3513 0678 00000000 .word _out_null
|
|||
|
3514 .cfi_endproc
|
|||
|
3515 .LFE13:
|
|||
|
3517 .section .text._out_char,"ax",%progbits
|
|||
|
3518 .align 1
|
|||
|
3519 .syntax unified
|
|||
|
3520 .thumb
|
|||
|
3521 .thumb_func
|
|||
|
3522 .fpu fpv5-d16
|
|||
|
3524 _out_char:
|
|||
|
3525 .LVL379:
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 89
|
|||
|
|
|||
|
|
|||
|
3526 .LFB2:
|
|||
|
150:Core/Src/printf.c **** (void)buffer; (void)idx; (void)maxlen;
|
|||
|
3527 .loc 1 150 1 is_stmt 1 view -0
|
|||
|
3528 .cfi_startproc
|
|||
|
3529 @ args = 0, pretend = 0, frame = 0
|
|||
|
3530 @ frame_needed = 0, uses_anonymous_args = 0
|
|||
|
151:Core/Src/printf.c **** if (character) {
|
|||
|
3531 .loc 1 151 3 view .LVU973
|
|||
|
151:Core/Src/printf.c **** if (character) {
|
|||
|
3532 .loc 1 151 17 view .LVU974
|
|||
|
151:Core/Src/printf.c **** if (character) {
|
|||
|
3533 .loc 1 151 28 view .LVU975
|
|||
|
152:Core/Src/printf.c **** _putchar(character);
|
|||
|
3534 .loc 1 152 3 view .LVU976
|
|||
|
152:Core/Src/printf.c **** _putchar(character);
|
|||
|
3535 .loc 1 152 6 is_stmt 0 view .LVU977
|
|||
|
3536 0000 00B9 cbnz r0, .L311
|
|||
|
3537 0002 7047 bx lr
|
|||
|
3538 .L311:
|
|||
|
150:Core/Src/printf.c **** (void)buffer; (void)idx; (void)maxlen;
|
|||
|
3539 .loc 1 150 1 view .LVU978
|
|||
|
3540 0004 08B5 push {r3, lr}
|
|||
|
3541 .LCFI27:
|
|||
|
3542 .cfi_def_cfa_offset 8
|
|||
|
3543 .cfi_offset 3, -8
|
|||
|
3544 .cfi_offset 14, -4
|
|||
|
153:Core/Src/printf.c **** }
|
|||
|
3545 .loc 1 153 5 is_stmt 1 view .LVU979
|
|||
|
3546 0006 FFF7FEFF bl _putchar
|
|||
|
3547 .LVL380:
|
|||
|
155:Core/Src/printf.c ****
|
|||
|
3548 .loc 1 155 1 is_stmt 0 view .LVU980
|
|||
|
3549 000a 08BD pop {r3, pc}
|
|||
|
3550 .cfi_endproc
|
|||
|
3551 .LFE2:
|
|||
|
3553 .section .text.printf_,"ax",%progbits
|
|||
|
3554 .align 1
|
|||
|
3555 .global printf_
|
|||
|
3556 .syntax unified
|
|||
|
3557 .thumb
|
|||
|
3558 .thumb_func
|
|||
|
3559 .fpu fpv5-d16
|
|||
|
3561 printf_:
|
|||
|
3562 .LVL381:
|
|||
|
3563 .LFB14:
|
|||
|
858:Core/Src/printf.c ****
|
|||
|
859:Core/Src/printf.c ****
|
|||
|
860:Core/Src/printf.c **** ///////////////////////////////////////////////////////////////////////////////
|
|||
|
861:Core/Src/printf.c ****
|
|||
|
862:Core/Src/printf.c **** int printf_(const char* format, ...)
|
|||
|
863:Core/Src/printf.c **** {
|
|||
|
3564 .loc 1 863 1 is_stmt 1 view -0
|
|||
|
3565 .cfi_startproc
|
|||
|
3566 @ args = 4, pretend = 16, frame = 8
|
|||
|
3567 @ frame_needed = 0, uses_anonymous_args = 1
|
|||
|
3568 .loc 1 863 1 is_stmt 0 view .LVU982
|
|||
|
3569 0000 0FB4 push {r0, r1, r2, r3}
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 90
|
|||
|
|
|||
|
|
|||
|
3570 .LCFI28:
|
|||
|
3571 .cfi_def_cfa_offset 16
|
|||
|
3572 .cfi_offset 0, -16
|
|||
|
3573 .cfi_offset 1, -12
|
|||
|
3574 .cfi_offset 2, -8
|
|||
|
3575 .cfi_offset 3, -4
|
|||
|
3576 0002 00B5 push {lr}
|
|||
|
3577 .LCFI29:
|
|||
|
3578 .cfi_def_cfa_offset 20
|
|||
|
3579 .cfi_offset 14, -20
|
|||
|
3580 0004 85B0 sub sp, sp, #20
|
|||
|
3581 .LCFI30:
|
|||
|
3582 .cfi_def_cfa_offset 40
|
|||
|
3583 0006 06AA add r2, sp, #24
|
|||
|
3584 0008 52F8043B ldr r3, [r2], #4
|
|||
|
864:Core/Src/printf.c **** va_list va;
|
|||
|
3585 .loc 1 864 3 is_stmt 1 view .LVU983
|
|||
|
865:Core/Src/printf.c **** va_start(va, format);
|
|||
|
3586 .loc 1 865 3 view .LVU984
|
|||
|
3587 000c 0392 str r2, [sp, #12]
|
|||
|
866:Core/Src/printf.c **** char buffer[1];
|
|||
|
3588 .loc 1 866 3 view .LVU985
|
|||
|
867:Core/Src/printf.c **** const int ret = _vsnprintf(_out_char, buffer, (size_t)-1, format, va);
|
|||
|
3589 .loc 1 867 3 view .LVU986
|
|||
|
3590 .loc 1 867 19 is_stmt 0 view .LVU987
|
|||
|
3591 000e 0092 str r2, [sp]
|
|||
|
3592 0010 4FF0FF32 mov r2, #-1
|
|||
|
3593 0014 02A9 add r1, sp, #8
|
|||
|
3594 0016 0448 ldr r0, .L314
|
|||
|
3595 0018 FFF7FEFF bl _vsnprintf
|
|||
|
3596 .LVL382:
|
|||
|
868:Core/Src/printf.c **** va_end(va);
|
|||
|
3597 .loc 1 868 3 is_stmt 1 view .LVU988
|
|||
|
869:Core/Src/printf.c **** return ret;
|
|||
|
3598 .loc 1 869 3 view .LVU989
|
|||
|
870:Core/Src/printf.c **** }
|
|||
|
3599 .loc 1 870 1 is_stmt 0 view .LVU990
|
|||
|
3600 001c 05B0 add sp, sp, #20
|
|||
|
3601 .LCFI31:
|
|||
|
3602 .cfi_def_cfa_offset 20
|
|||
|
3603 @ sp needed
|
|||
|
3604 001e 5DF804EB ldr lr, [sp], #4
|
|||
|
3605 .LCFI32:
|
|||
|
3606 .cfi_restore 14
|
|||
|
3607 .cfi_def_cfa_offset 16
|
|||
|
3608 0022 04B0 add sp, sp, #16
|
|||
|
3609 .LCFI33:
|
|||
|
3610 .cfi_restore 3
|
|||
|
3611 .cfi_restore 2
|
|||
|
3612 .cfi_restore 1
|
|||
|
3613 .cfi_restore 0
|
|||
|
3614 .cfi_def_cfa_offset 0
|
|||
|
3615 0024 7047 bx lr
|
|||
|
3616 .L315:
|
|||
|
3617 0026 00BF .align 2
|
|||
|
3618 .L314:
|
|||
|
3619 0028 00000000 .word _out_char
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 91
|
|||
|
|
|||
|
|
|||
|
3620 .cfi_endproc
|
|||
|
3621 .LFE14:
|
|||
|
3623 .section .text.sprintf_,"ax",%progbits
|
|||
|
3624 .align 1
|
|||
|
3625 .global sprintf_
|
|||
|
3626 .syntax unified
|
|||
|
3627 .thumb
|
|||
|
3628 .thumb_func
|
|||
|
3629 .fpu fpv5-d16
|
|||
|
3631 sprintf_:
|
|||
|
3632 .LVL383:
|
|||
|
3633 .LFB15:
|
|||
|
871:Core/Src/printf.c ****
|
|||
|
872:Core/Src/printf.c ****
|
|||
|
873:Core/Src/printf.c **** int sprintf_(char* buffer, const char* format, ...)
|
|||
|
874:Core/Src/printf.c **** {
|
|||
|
3634 .loc 1 874 1 is_stmt 1 view -0
|
|||
|
3635 .cfi_startproc
|
|||
|
3636 @ args = 4, pretend = 12, frame = 8
|
|||
|
3637 @ frame_needed = 0, uses_anonymous_args = 1
|
|||
|
3638 .loc 1 874 1 is_stmt 0 view .LVU992
|
|||
|
3639 0000 0EB4 push {r1, r2, r3}
|
|||
|
3640 .LCFI34:
|
|||
|
3641 .cfi_def_cfa_offset 12
|
|||
|
3642 .cfi_offset 1, -12
|
|||
|
3643 .cfi_offset 2, -8
|
|||
|
3644 .cfi_offset 3, -4
|
|||
|
3645 0002 00B5 push {lr}
|
|||
|
3646 .LCFI35:
|
|||
|
3647 .cfi_def_cfa_offset 16
|
|||
|
3648 .cfi_offset 14, -16
|
|||
|
3649 0004 84B0 sub sp, sp, #16
|
|||
|
3650 .LCFI36:
|
|||
|
3651 .cfi_def_cfa_offset 32
|
|||
|
3652 0006 0146 mov r1, r0
|
|||
|
3653 0008 05AA add r2, sp, #20
|
|||
|
3654 000a 52F8043B ldr r3, [r2], #4
|
|||
|
875:Core/Src/printf.c **** va_list va;
|
|||
|
3655 .loc 1 875 3 is_stmt 1 view .LVU993
|
|||
|
876:Core/Src/printf.c **** va_start(va, format);
|
|||
|
3656 .loc 1 876 3 view .LVU994
|
|||
|
3657 000e 0392 str r2, [sp, #12]
|
|||
|
877:Core/Src/printf.c **** const int ret = _vsnprintf(_out_buffer, buffer, (size_t)-1, format, va);
|
|||
|
3658 .loc 1 877 3 view .LVU995
|
|||
|
3659 .loc 1 877 19 is_stmt 0 view .LVU996
|
|||
|
3660 0010 0092 str r2, [sp]
|
|||
|
3661 0012 4FF0FF32 mov r2, #-1
|
|||
|
3662 0016 0448 ldr r0, .L318
|
|||
|
3663 .LVL384:
|
|||
|
3664 .loc 1 877 19 view .LVU997
|
|||
|
3665 0018 FFF7FEFF bl _vsnprintf
|
|||
|
3666 .LVL385:
|
|||
|
878:Core/Src/printf.c **** va_end(va);
|
|||
|
3667 .loc 1 878 3 is_stmt 1 view .LVU998
|
|||
|
879:Core/Src/printf.c **** return ret;
|
|||
|
3668 .loc 1 879 3 view .LVU999
|
|||
|
880:Core/Src/printf.c **** }
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 92
|
|||
|
|
|||
|
|
|||
|
3669 .loc 1 880 1 is_stmt 0 view .LVU1000
|
|||
|
3670 001c 04B0 add sp, sp, #16
|
|||
|
3671 .LCFI37:
|
|||
|
3672 .cfi_def_cfa_offset 16
|
|||
|
3673 @ sp needed
|
|||
|
3674 001e 5DF804EB ldr lr, [sp], #4
|
|||
|
3675 .LCFI38:
|
|||
|
3676 .cfi_restore 14
|
|||
|
3677 .cfi_def_cfa_offset 12
|
|||
|
3678 0022 03B0 add sp, sp, #12
|
|||
|
3679 .LCFI39:
|
|||
|
3680 .cfi_restore 3
|
|||
|
3681 .cfi_restore 2
|
|||
|
3682 .cfi_restore 1
|
|||
|
3683 .cfi_def_cfa_offset 0
|
|||
|
3684 0024 7047 bx lr
|
|||
|
3685 .L319:
|
|||
|
3686 0026 00BF .align 2
|
|||
|
3687 .L318:
|
|||
|
3688 0028 00000000 .word _out_buffer
|
|||
|
3689 .cfi_endproc
|
|||
|
3690 .LFE15:
|
|||
|
3692 .section .text.snprintf_,"ax",%progbits
|
|||
|
3693 .align 1
|
|||
|
3694 .global snprintf_
|
|||
|
3695 .syntax unified
|
|||
|
3696 .thumb
|
|||
|
3697 .thumb_func
|
|||
|
3698 .fpu fpv5-d16
|
|||
|
3700 snprintf_:
|
|||
|
3701 .LVL386:
|
|||
|
3702 .LFB16:
|
|||
|
881:Core/Src/printf.c ****
|
|||
|
882:Core/Src/printf.c ****
|
|||
|
883:Core/Src/printf.c **** int snprintf_(char* buffer, size_t count, const char* format, ...)
|
|||
|
884:Core/Src/printf.c **** {
|
|||
|
3703 .loc 1 884 1 is_stmt 1 view -0
|
|||
|
3704 .cfi_startproc
|
|||
|
3705 @ args = 4, pretend = 8, frame = 8
|
|||
|
3706 @ frame_needed = 0, uses_anonymous_args = 1
|
|||
|
3707 .loc 1 884 1 is_stmt 0 view .LVU1002
|
|||
|
3708 0000 0CB4 push {r2, r3}
|
|||
|
3709 .LCFI40:
|
|||
|
3710 .cfi_def_cfa_offset 8
|
|||
|
3711 .cfi_offset 2, -8
|
|||
|
3712 .cfi_offset 3, -4
|
|||
|
3713 0002 10B5 push {r4, lr}
|
|||
|
3714 .LCFI41:
|
|||
|
3715 .cfi_def_cfa_offset 16
|
|||
|
3716 .cfi_offset 4, -16
|
|||
|
3717 .cfi_offset 14, -12
|
|||
|
3718 0004 84B0 sub sp, sp, #16
|
|||
|
3719 .LCFI42:
|
|||
|
3720 .cfi_def_cfa_offset 32
|
|||
|
3721 0006 0A46 mov r2, r1
|
|||
|
3722 0008 06AC add r4, sp, #24
|
|||
|
3723 000a 54F8043B ldr r3, [r4], #4
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 93
|
|||
|
|
|||
|
|
|||
|
885:Core/Src/printf.c **** va_list va;
|
|||
|
3724 .loc 1 885 3 is_stmt 1 view .LVU1003
|
|||
|
886:Core/Src/printf.c **** va_start(va, format);
|
|||
|
3725 .loc 1 886 3 view .LVU1004
|
|||
|
3726 000e 0394 str r4, [sp, #12]
|
|||
|
887:Core/Src/printf.c **** const int ret = _vsnprintf(_out_buffer, buffer, count, format, va);
|
|||
|
3727 .loc 1 887 3 view .LVU1005
|
|||
|
3728 .loc 1 887 19 is_stmt 0 view .LVU1006
|
|||
|
3729 0010 0094 str r4, [sp]
|
|||
|
3730 0012 0146 mov r1, r0
|
|||
|
3731 .LVL387:
|
|||
|
3732 .loc 1 887 19 view .LVU1007
|
|||
|
3733 0014 0348 ldr r0, .L322
|
|||
|
3734 .LVL388:
|
|||
|
3735 .loc 1 887 19 view .LVU1008
|
|||
|
3736 0016 FFF7FEFF bl _vsnprintf
|
|||
|
3737 .LVL389:
|
|||
|
888:Core/Src/printf.c **** va_end(va);
|
|||
|
3738 .loc 1 888 3 is_stmt 1 view .LVU1009
|
|||
|
889:Core/Src/printf.c **** return ret;
|
|||
|
3739 .loc 1 889 3 view .LVU1010
|
|||
|
890:Core/Src/printf.c **** }
|
|||
|
3740 .loc 1 890 1 is_stmt 0 view .LVU1011
|
|||
|
3741 001a 04B0 add sp, sp, #16
|
|||
|
3742 .LCFI43:
|
|||
|
3743 .cfi_def_cfa_offset 16
|
|||
|
3744 @ sp needed
|
|||
|
3745 001c BDE81040 pop {r4, lr}
|
|||
|
3746 .LCFI44:
|
|||
|
3747 .cfi_restore 14
|
|||
|
3748 .cfi_restore 4
|
|||
|
3749 .cfi_def_cfa_offset 8
|
|||
|
3750 0020 02B0 add sp, sp, #8
|
|||
|
3751 .LCFI45:
|
|||
|
3752 .cfi_restore 3
|
|||
|
3753 .cfi_restore 2
|
|||
|
3754 .cfi_def_cfa_offset 0
|
|||
|
3755 0022 7047 bx lr
|
|||
|
3756 .L323:
|
|||
|
3757 .align 2
|
|||
|
3758 .L322:
|
|||
|
3759 0024 00000000 .word _out_buffer
|
|||
|
3760 .cfi_endproc
|
|||
|
3761 .LFE16:
|
|||
|
3763 .section .text.vprintf_,"ax",%progbits
|
|||
|
3764 .align 1
|
|||
|
3765 .global vprintf_
|
|||
|
3766 .syntax unified
|
|||
|
3767 .thumb
|
|||
|
3768 .thumb_func
|
|||
|
3769 .fpu fpv5-d16
|
|||
|
3771 vprintf_:
|
|||
|
3772 .LVL390:
|
|||
|
3773 .LFB17:
|
|||
|
891:Core/Src/printf.c ****
|
|||
|
892:Core/Src/printf.c ****
|
|||
|
893:Core/Src/printf.c **** int vprintf_(const char* format, va_list va)
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 94
|
|||
|
|
|||
|
|
|||
|
894:Core/Src/printf.c **** {
|
|||
|
3774 .loc 1 894 1 is_stmt 1 view -0
|
|||
|
3775 .cfi_startproc
|
|||
|
3776 @ args = 0, pretend = 0, frame = 8
|
|||
|
3777 @ frame_needed = 0, uses_anonymous_args = 0
|
|||
|
3778 .loc 1 894 1 is_stmt 0 view .LVU1013
|
|||
|
3779 0000 00B5 push {lr}
|
|||
|
3780 .LCFI46:
|
|||
|
3781 .cfi_def_cfa_offset 4
|
|||
|
3782 .cfi_offset 14, -4
|
|||
|
3783 0002 85B0 sub sp, sp, #20
|
|||
|
3784 .LCFI47:
|
|||
|
3785 .cfi_def_cfa_offset 24
|
|||
|
3786 0004 0346 mov r3, r0
|
|||
|
895:Core/Src/printf.c **** char buffer[1];
|
|||
|
3787 .loc 1 895 3 is_stmt 1 view .LVU1014
|
|||
|
896:Core/Src/printf.c **** return _vsnprintf(_out_char, buffer, (size_t)-1, format, va);
|
|||
|
3788 .loc 1 896 3 view .LVU1015
|
|||
|
3789 .loc 1 896 10 is_stmt 0 view .LVU1016
|
|||
|
3790 0006 0091 str r1, [sp]
|
|||
|
3791 0008 4FF0FF32 mov r2, #-1
|
|||
|
3792 000c 03A9 add r1, sp, #12
|
|||
|
3793 .LVL391:
|
|||
|
3794 .loc 1 896 10 view .LVU1017
|
|||
|
3795 000e 0348 ldr r0, .L326
|
|||
|
3796 .LVL392:
|
|||
|
3797 .loc 1 896 10 view .LVU1018
|
|||
|
3798 0010 FFF7FEFF bl _vsnprintf
|
|||
|
3799 .LVL393:
|
|||
|
897:Core/Src/printf.c **** }
|
|||
|
3800 .loc 1 897 1 view .LVU1019
|
|||
|
3801 0014 05B0 add sp, sp, #20
|
|||
|
3802 .LCFI48:
|
|||
|
3803 .cfi_def_cfa_offset 4
|
|||
|
3804 @ sp needed
|
|||
|
3805 0016 5DF804FB ldr pc, [sp], #4
|
|||
|
3806 .L327:
|
|||
|
3807 001a 00BF .align 2
|
|||
|
3808 .L326:
|
|||
|
3809 001c 00000000 .word _out_char
|
|||
|
3810 .cfi_endproc
|
|||
|
3811 .LFE17:
|
|||
|
3813 .section .text.vsnprintf_,"ax",%progbits
|
|||
|
3814 .align 1
|
|||
|
3815 .global vsnprintf_
|
|||
|
3816 .syntax unified
|
|||
|
3817 .thumb
|
|||
|
3818 .thumb_func
|
|||
|
3819 .fpu fpv5-d16
|
|||
|
3821 vsnprintf_:
|
|||
|
3822 .LVL394:
|
|||
|
3823 .LFB18:
|
|||
|
898:Core/Src/printf.c ****
|
|||
|
899:Core/Src/printf.c ****
|
|||
|
900:Core/Src/printf.c **** int vsnprintf_(char* buffer, size_t count, const char* format, va_list va)
|
|||
|
901:Core/Src/printf.c **** {
|
|||
|
3824 .loc 1 901 1 is_stmt 1 view -0
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 95
|
|||
|
|
|||
|
|
|||
|
3825 .cfi_startproc
|
|||
|
3826 @ args = 0, pretend = 0, frame = 0
|
|||
|
3827 @ frame_needed = 0, uses_anonymous_args = 0
|
|||
|
3828 .loc 1 901 1 is_stmt 0 view .LVU1021
|
|||
|
3829 0000 00B5 push {lr}
|
|||
|
3830 .LCFI49:
|
|||
|
3831 .cfi_def_cfa_offset 4
|
|||
|
3832 .cfi_offset 14, -4
|
|||
|
3833 0002 83B0 sub sp, sp, #12
|
|||
|
3834 .LCFI50:
|
|||
|
3835 .cfi_def_cfa_offset 16
|
|||
|
902:Core/Src/printf.c **** return _vsnprintf(_out_buffer, buffer, count, format, va);
|
|||
|
3836 .loc 1 902 3 is_stmt 1 view .LVU1022
|
|||
|
3837 .loc 1 902 10 is_stmt 0 view .LVU1023
|
|||
|
3838 0004 0093 str r3, [sp]
|
|||
|
3839 0006 1346 mov r3, r2
|
|||
|
3840 .LVL395:
|
|||
|
3841 .loc 1 902 10 view .LVU1024
|
|||
|
3842 0008 0A46 mov r2, r1
|
|||
|
3843 .LVL396:
|
|||
|
3844 .loc 1 902 10 view .LVU1025
|
|||
|
3845 000a 0146 mov r1, r0
|
|||
|
3846 .LVL397:
|
|||
|
3847 .loc 1 902 10 view .LVU1026
|
|||
|
3848 000c 0248 ldr r0, .L330
|
|||
|
3849 .LVL398:
|
|||
|
3850 .loc 1 902 10 view .LVU1027
|
|||
|
3851 000e FFF7FEFF bl _vsnprintf
|
|||
|
3852 .LVL399:
|
|||
|
903:Core/Src/printf.c **** }
|
|||
|
3853 .loc 1 903 1 view .LVU1028
|
|||
|
3854 0012 03B0 add sp, sp, #12
|
|||
|
3855 .LCFI51:
|
|||
|
3856 .cfi_def_cfa_offset 4
|
|||
|
3857 @ sp needed
|
|||
|
3858 0014 5DF804FB ldr pc, [sp], #4
|
|||
|
3859 .L331:
|
|||
|
3860 .align 2
|
|||
|
3861 .L330:
|
|||
|
3862 0018 00000000 .word _out_buffer
|
|||
|
3863 .cfi_endproc
|
|||
|
3864 .LFE18:
|
|||
|
3866 .section .text.fctprintf,"ax",%progbits
|
|||
|
3867 .align 1
|
|||
|
3868 .global fctprintf
|
|||
|
3869 .syntax unified
|
|||
|
3870 .thumb
|
|||
|
3871 .thumb_func
|
|||
|
3872 .fpu fpv5-d16
|
|||
|
3874 fctprintf:
|
|||
|
3875 .LVL400:
|
|||
|
3876 .LFB19:
|
|||
|
904:Core/Src/printf.c ****
|
|||
|
905:Core/Src/printf.c ****
|
|||
|
906:Core/Src/printf.c **** int fctprintf(void (*out)(char character, void* arg), void* arg, const char* format, ...)
|
|||
|
907:Core/Src/printf.c **** {
|
|||
|
3877 .loc 1 907 1 is_stmt 1 view -0
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 96
|
|||
|
|
|||
|
|
|||
|
3878 .cfi_startproc
|
|||
|
3879 @ args = 4, pretend = 8, frame = 16
|
|||
|
3880 @ frame_needed = 0, uses_anonymous_args = 1
|
|||
|
3881 .loc 1 907 1 is_stmt 0 view .LVU1030
|
|||
|
3882 0000 0CB4 push {r2, r3}
|
|||
|
3883 .LCFI52:
|
|||
|
3884 .cfi_def_cfa_offset 8
|
|||
|
3885 .cfi_offset 2, -8
|
|||
|
3886 .cfi_offset 3, -4
|
|||
|
3887 0002 00B5 push {lr}
|
|||
|
3888 .LCFI53:
|
|||
|
3889 .cfi_def_cfa_offset 12
|
|||
|
3890 .cfi_offset 14, -12
|
|||
|
3891 0004 87B0 sub sp, sp, #28
|
|||
|
3892 .LCFI54:
|
|||
|
3893 .cfi_def_cfa_offset 40
|
|||
|
3894 0006 08AA add r2, sp, #32
|
|||
|
3895 0008 52F8043B ldr r3, [r2], #4
|
|||
|
908:Core/Src/printf.c **** va_list va;
|
|||
|
3896 .loc 1 908 3 is_stmt 1 view .LVU1031
|
|||
|
909:Core/Src/printf.c **** va_start(va, format);
|
|||
|
3897 .loc 1 909 3 view .LVU1032
|
|||
|
3898 000c 0592 str r2, [sp, #20]
|
|||
|
910:Core/Src/printf.c **** const out_fct_wrap_type out_fct_wrap = { out, arg };
|
|||
|
3899 .loc 1 910 3 view .LVU1033
|
|||
|
3900 .loc 1 910 27 is_stmt 0 view .LVU1034
|
|||
|
3901 000e 0390 str r0, [sp, #12]
|
|||
|
3902 0010 0491 str r1, [sp, #16]
|
|||
|
911:Core/Src/printf.c **** const int ret = _vsnprintf(_out_fct, (char*)(uintptr_t)&out_fct_wrap, (size_t)-1, format, va);
|
|||
|
3903 .loc 1 911 3 is_stmt 1 view .LVU1035
|
|||
|
3904 .loc 1 911 19 is_stmt 0 view .LVU1036
|
|||
|
3905 0012 0092 str r2, [sp]
|
|||
|
3906 0014 4FF0FF32 mov r2, #-1
|
|||
|
3907 0018 03A9 add r1, sp, #12
|
|||
|
3908 001a 0448 ldr r0, .L334
|
|||
|
3909 .LVL401:
|
|||
|
3910 .loc 1 911 19 view .LVU1037
|
|||
|
3911 001c FFF7FEFF bl _vsnprintf
|
|||
|
3912 .LVL402:
|
|||
|
912:Core/Src/printf.c **** va_end(va);
|
|||
|
3913 .loc 1 912 3 is_stmt 1 view .LVU1038
|
|||
|
913:Core/Src/printf.c **** return ret;
|
|||
|
3914 .loc 1 913 3 view .LVU1039
|
|||
|
914:Core/Src/printf.c **** }
|
|||
|
3915 .loc 1 914 1 is_stmt 0 view .LVU1040
|
|||
|
3916 0020 07B0 add sp, sp, #28
|
|||
|
3917 .LCFI55:
|
|||
|
3918 .cfi_def_cfa_offset 12
|
|||
|
3919 @ sp needed
|
|||
|
3920 0022 5DF804EB ldr lr, [sp], #4
|
|||
|
3921 .LCFI56:
|
|||
|
3922 .cfi_restore 14
|
|||
|
3923 .cfi_def_cfa_offset 8
|
|||
|
3924 0026 02B0 add sp, sp, #8
|
|||
|
3925 .LCFI57:
|
|||
|
3926 .cfi_restore 3
|
|||
|
3927 .cfi_restore 2
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 97
|
|||
|
|
|||
|
|
|||
|
3928 .cfi_def_cfa_offset 0
|
|||
|
3929 0028 7047 bx lr
|
|||
|
3930 .L335:
|
|||
|
3931 002a 00BF .align 2
|
|||
|
3932 .L334:
|
|||
|
3933 002c 00000000 .word _out_fct
|
|||
|
3934 .cfi_endproc
|
|||
|
3935 .LFE19:
|
|||
|
3937 .section .rodata.pow10.0,"a"
|
|||
|
3938 .align 3
|
|||
|
3939 .set .LANCHOR0,. + 0
|
|||
|
3942 pow10.0:
|
|||
|
3943 0000 00000000 .word 0
|
|||
|
3944 0004 0000F03F .word 1072693248
|
|||
|
3945 0008 00000000 .word 0
|
|||
|
3946 000c 00002440 .word 1076101120
|
|||
|
3947 0010 00000000 .word 0
|
|||
|
3948 0014 00005940 .word 1079574528
|
|||
|
3949 0018 00000000 .word 0
|
|||
|
3950 001c 00408F40 .word 1083129856
|
|||
|
3951 0020 00000000 .word 0
|
|||
|
3952 0024 0088C340 .word 1086556160
|
|||
|
3953 0028 00000000 .word 0
|
|||
|
3954 002c 006AF840 .word 1090021888
|
|||
|
3955 0030 00000000 .word 0
|
|||
|
3956 0034 80842E41 .word 1093567616
|
|||
|
3957 0038 00000000 .word 0
|
|||
|
3958 003c D0126341 .word 1097011920
|
|||
|
3959 0040 00000000 .word 0
|
|||
|
3960 0044 84D79741 .word 1100470148
|
|||
|
3961 0048 00000000 .word 0
|
|||
|
3962 004c 65CDCD41 .word 1104006501
|
|||
|
3963 .text
|
|||
|
3964 .Letext0:
|
|||
|
3965 .file 2 "/usr/arm-none-eabi/include/machine/_default_types.h"
|
|||
|
3966 .file 3 "/usr/arm-none-eabi/include/sys/_stdint.h"
|
|||
|
3967 .file 4 "/usr/lib/gcc/arm-none-eabi/10.2.0/include/stdarg.h"
|
|||
|
3968 .file 5 "/usr/lib/gcc/arm-none-eabi/10.2.0/include/stddef.h"
|
|||
|
3969 .file 6 "<built-in>"
|
|||
|
3970 .file 7 "Core/Inc/printf.h"
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 98
|
|||
|
|
|||
|
|
|||
|
DEFINED SYMBOLS
|
|||
|
*ABS*:0000000000000000 printf.c
|
|||
|
/tmp/ccibzHy5.s:17 .text._out_buffer:0000000000000000 $t
|
|||
|
/tmp/ccibzHy5.s:24 .text._out_buffer:0000000000000000 _out_buffer
|
|||
|
/tmp/ccibzHy5.s:47 .text._out_null:0000000000000000 $t
|
|||
|
/tmp/ccibzHy5.s:53 .text._out_null:0000000000000000 _out_null
|
|||
|
/tmp/ccibzHy5.s:71 .text._out_fct:0000000000000000 $t
|
|||
|
/tmp/ccibzHy5.s:77 .text._out_fct:0000000000000000 _out_fct
|
|||
|
/tmp/ccibzHy5.s:119 .text._atoi:0000000000000000 $t
|
|||
|
/tmp/ccibzHy5.s:125 .text._atoi:0000000000000000 _atoi
|
|||
|
/tmp/ccibzHy5.s:190 .text._out_rev:0000000000000000 $t
|
|||
|
/tmp/ccibzHy5.s:196 .text._out_rev:0000000000000000 _out_rev
|
|||
|
/tmp/ccibzHy5.s:330 .text._ntoa_format:0000000000000000 $t
|
|||
|
/tmp/ccibzHy5.s:336 .text._ntoa_format:0000000000000000 _ntoa_format
|
|||
|
/tmp/ccibzHy5.s:616 .text._ntoa_long:0000000000000000 $t
|
|||
|
/tmp/ccibzHy5.s:622 .text._ntoa_long:0000000000000000 _ntoa_long
|
|||
|
/tmp/ccibzHy5.s:777 .text._ntoa_long_long:0000000000000000 $t
|
|||
|
/tmp/ccibzHy5.s:783 .text._ntoa_long_long:0000000000000000 _ntoa_long_long
|
|||
|
/tmp/ccibzHy5.s:960 .text._etoa:0000000000000000 $t
|
|||
|
/tmp/ccibzHy5.s:966 .text._etoa:0000000000000000 _etoa
|
|||
|
/tmp/ccibzHy5.s:1456 .text._ftoa:0000000000000000 _ftoa
|
|||
|
/tmp/ccibzHy5.s:1413 .text._etoa:0000000000000280 $d
|
|||
|
/tmp/ccibzHy5.s:1437 .rodata._ftoa.str1.4:0000000000000000 $d
|
|||
|
/tmp/ccibzHy5.s:1450 .text._ftoa:0000000000000000 $t
|
|||
|
/tmp/ccibzHy5.s:1999 .text._ftoa:00000000000002c8 $d
|
|||
|
/tmp/ccibzHy5.s:2020 .text._vsnprintf:0000000000000000 $t
|
|||
|
/tmp/ccibzHy5.s:2026 .text._vsnprintf:0000000000000000 _vsnprintf
|
|||
|
/tmp/ccibzHy5.s:2121 .text._vsnprintf:000000000000004e $d
|
|||
|
/tmp/ccibzHy5.s:2189 .text._vsnprintf:000000000000008c $d
|
|||
|
/tmp/ccibzHy5.s:2477 .text._vsnprintf:000000000000018a $d
|
|||
|
/tmp/ccibzHy5.s:2561 .text._vsnprintf:0000000000000232 $t
|
|||
|
/tmp/ccibzHy5.s:3513 .text._vsnprintf:0000000000000678 $d
|
|||
|
/tmp/ccibzHy5.s:3518 .text._out_char:0000000000000000 $t
|
|||
|
/tmp/ccibzHy5.s:3524 .text._out_char:0000000000000000 _out_char
|
|||
|
/tmp/ccibzHy5.s:3554 .text.printf_:0000000000000000 $t
|
|||
|
/tmp/ccibzHy5.s:3561 .text.printf_:0000000000000000 printf_
|
|||
|
/tmp/ccibzHy5.s:3619 .text.printf_:0000000000000028 $d
|
|||
|
/tmp/ccibzHy5.s:3624 .text.sprintf_:0000000000000000 $t
|
|||
|
/tmp/ccibzHy5.s:3631 .text.sprintf_:0000000000000000 sprintf_
|
|||
|
/tmp/ccibzHy5.s:3688 .text.sprintf_:0000000000000028 $d
|
|||
|
/tmp/ccibzHy5.s:3693 .text.snprintf_:0000000000000000 $t
|
|||
|
/tmp/ccibzHy5.s:3700 .text.snprintf_:0000000000000000 snprintf_
|
|||
|
/tmp/ccibzHy5.s:3759 .text.snprintf_:0000000000000024 $d
|
|||
|
/tmp/ccibzHy5.s:3764 .text.vprintf_:0000000000000000 $t
|
|||
|
/tmp/ccibzHy5.s:3771 .text.vprintf_:0000000000000000 vprintf_
|
|||
|
/tmp/ccibzHy5.s:3809 .text.vprintf_:000000000000001c $d
|
|||
|
/tmp/ccibzHy5.s:3814 .text.vsnprintf_:0000000000000000 $t
|
|||
|
/tmp/ccibzHy5.s:3821 .text.vsnprintf_:0000000000000000 vsnprintf_
|
|||
|
/tmp/ccibzHy5.s:3862 .text.vsnprintf_:0000000000000018 $d
|
|||
|
/tmp/ccibzHy5.s:3867 .text.fctprintf:0000000000000000 $t
|
|||
|
/tmp/ccibzHy5.s:3874 .text.fctprintf:0000000000000000 fctprintf
|
|||
|
/tmp/ccibzHy5.s:3933 .text.fctprintf:000000000000002c $d
|
|||
|
/tmp/ccibzHy5.s:3938 .rodata.pow10.0:0000000000000000 $d
|
|||
|
/tmp/ccibzHy5.s:3942 .rodata.pow10.0:0000000000000000 pow10.0
|
|||
|
/tmp/ccibzHy5.s:2138 .text._vsnprintf:000000000000005f $d
|
|||
|
/tmp/ccibzHy5.s:2138 .text._vsnprintf:0000000000000060 $t
|
|||
|
/tmp/ccibzHy5.s:2209 .text._vsnprintf:000000000000009f $d
|
|||
|
ARM GAS /tmp/ccibzHy5.s page 99
|
|||
|
|
|||
|
|
|||
|
/tmp/ccibzHy5.s:2209 .text._vsnprintf:00000000000000a0 $t
|
|||
|
|
|||
|
UNDEFINED SYMBOLS
|
|||
|
__aeabi_uldivmod
|
|||
|
_putchar
|