STM32H750VB_Bootloader/build/printf.lst

5872 lines
248 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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