📄 utils.lst
字号:
1 .code 16 2 .file "utils.c" 10 .Ltext0: 11 .global __modsi3 12 .global __divsi3 13 .align 2 14 .global ITOA 15 .code 16 16 .thumb_func 18 ITOA: 19 .LFB290: 20 .file 1 "utils.c" 1:utils.c **** #include "include/includes.h"
2:utils.c ****
3:utils.c **** void ITOA(long n, char r[]) {
21 .loc 1 3 0 22 0000 90B5 push {r4, r7, lr} 23 .LCFI0: 24 0002 6F46 mov r7, sp 25 .LCFI1: 26 0004 89B0 sub sp, sp, #36 27 .LCFI2: 28 0006 3B1C mov r3, r7 29 0008 203B sub r3, r3, #32 30 000a 1860 str r0, [r3] 31 000c 3B1C mov r3, r7 32 000e 243B sub r3, r3, #36 33 0010 1960 str r1, [r3] 4:utils.c **** int i=0;
34 .loc 1 4 0 35 0012 3A1C mov r2, r7 36 0014 103A sub r2, r2, #16 37 0016 0023 mov r3, #0 38 0018 1360 str r3, [r2] 5:utils.c **** int j=0;
39 .loc 1 5 0 40 001a 3A1C mov r2, r7 41 001c 0C3A sub r2, r2, #12 42 001e 0023 mov r3, #0 43 0020 1360 str r3, [r2] 6:utils.c **** int c=0;
44 .loc 1 6 0 45 0022 3A1C mov r2, r7 46 0024 083A sub r2, r2, #8 47 0026 0023 mov r3, #0 48 0028 1360 str r3, [r2] 7:utils.c **** int sign = 0;
49 .loc 1 7 0 50 002a 3A1F sub r2, r7, #4 51 002c 0023 mov r3, #0 52 002e 1360 str r3, [r2] 8:utils.c **** char s[10];
9:utils.c ****
10:utils.c ****
11:utils.c **** if ((sign = n) < 0) /* RECORD SIGN */
53 .loc 1 11 0 54 0030 3A1F sub r2, r7, #4 55 0032 3B1C mov r3, r7 56 0034 203B sub r3, r3, #32 57 0036 1B68 ldr r3, [r3] 58 0038 1360 str r3, [r2] 59 003a 3B1F sub r3, r7, #4 60 003c 1B68 ldr r3, [r3] 61 003e 002B cmp r3, #0 62 0040 06DA bge .L2 12:utils.c **** n = -n; /* MAKE N POSITIVE */
63 .loc 1 12 0 64 0042 3A1C mov r2, r7 65 0044 203A sub r2, r2, #32 66 0046 3B1C mov r3, r7 67 0048 203B sub r3, r3, #32 68 004a 1B68 ldr r3, [r3] 69 004c 5B42 neg r3, r3 70 004e 1360 str r3, [r2] 71 .L2: 13:utils.c ****
14:utils.c **** i = 0;
72 .loc 1 14 0 73 0050 3A1C mov r2, r7 74 0052 103A sub r2, r2, #16 75 0054 0023 mov r3, #0 76 0056 1360 str r3, [r2] 77 .L4: 15:utils.c **** do { /* GENERATE DIGITS IN REVERSE ORDER */
16:utils.c **** s[i++] = n % 10 + '0'; /* GET NEXT DIGIT */
78 .loc 1 16 0 79 0058 3B1C mov r3, r7 80 005a 103B sub r3, r3, #16 81 005c 1C68 ldr r4, [r3] 82 005e 3B1C mov r3, r7 83 0060 203B sub r3, r3, #32 84 0062 1B68 ldr r3, [r3] 85 0064 181C mov r0, r3 86 0066 0A21 mov r1, #10 87 0068 FFF7FEFF bl __modsi3 88 006c 031C mov r3, r0 89 006e 1B06 lsl r3, r3, #24 90 0070 1B0E lsr r3, r3, #24 91 0072 3033 add r3, r3, #48 92 0074 1B06 lsl r3, r3, #24 93 0076 1B0E lsr r3, r3, #24 94 0078 1B06 lsl r3, r3, #24 95 007a 1B0E lsr r3, r3, #24 96 007c 3A1C mov r2, r7 97 007e 1A3A sub r2, r2, #26 98 0080 1355 strb r3, [r2, r4] 99 0082 3A1C mov r2, r7 100 0084 103A sub r2, r2, #16 101 0086 3B1C mov r3, r7 102 0088 103B sub r3, r3, #16 103 008a 1B68 ldr r3, [r3] 104 008c 0133 add r3, r3, #1 105 008e 1360 str r3, [r2] 17:utils.c **** } while ((n /=10) > 0); /* DELETE IT */
106 .loc 1 17 0 107 0090 3C1C mov r4, r7 108 0092 203C sub r4, r4, #32 109 0094 3B1C mov r3, r7 110 0096 203B sub r3, r3, #32 111 0098 1B68 ldr r3, [r3] 112 009a 181C mov r0, r3 113 009c 0A21 mov r1, #10 114 009e FFF7FEFF bl __divsi3 115 00a2 031C mov r3, r0 116 00a4 2360 str r3, [r4] 117 00a6 3B1C mov r3, r7 118 00a8 203B sub r3, r3, #32 119 00aa 1B68 ldr r3, [r3] 120 00ac 002B cmp r3, #0 121 00ae D3DC bgt .L4 18:utils.c **** if (sign < 0)
122 .loc 1 18 0 123 00b0 3B1F sub r3, r7, #4 124 00b2 1B68 ldr r3, [r3] 125 00b4 002B cmp r3, #0 126 00b6 0DDA bge .L6 19:utils.c **** s[i++] = '-';
127 .loc 1 19 0 128 00b8 3B1C mov r3, r7 129 00ba 103B sub r3, r3, #16 130 00bc 1968 ldr r1, [r3] 131 00be 3A1C mov r2, r7 132 00c0 1A3A sub r2, r2, #26 133 00c2 2D23 mov r3, #45 134 00c4 5354 strb r3, [r2, r1] 135 00c6 3A1C mov r2, r7 136 00c8 103A sub r2, r2, #16 137 00ca 3B1C mov r3, r7 138 00cc 103B sub r3, r3, #16 139 00ce 1B68 ldr r3, [r3] 140 00d0 0133 add r3, r3, #1 141 00d2 1360 str r3, [r2] 142 .L6: 20:utils.c **** s[i] = '\0';
143 .loc 1 20 0 144 00d4 3B1C mov r3, r7 145 00d6 103B sub r3, r3, #16 146 00d8 1968 ldr r1, [r3] 147 00da 3A1C mov r2, r7 148 00dc 1A3A sub r2, r2, #26 149 00de 0023 mov r3, #0 150 00e0 5354 strb r3, [r2, r1] 21:utils.c **** c = i;
151 .loc 1 21 0 152 00e2 3A1C mov r2, r7 153 00e4 083A sub r2, r2, #8 154 00e6 3B1C mov r3, r7 155 00e8 103B sub r3, r3, #16 156 00ea 1B68 ldr r3, [r3] 157 00ec 1360 str r3, [r2] 22:utils.c ****
23:utils.c **** j=0;
158 .loc 1 23 0 159 00ee 3A1C mov r2, r7 160 00f0 0C3A sub r2, r2, #12 161 00f2 0023 mov r3, #0 162 00f4 1360 str r3, [r2] 24:utils.c **** for (i = c-1; i >= 0; i-- ) {
163 .loc 1 24 0 164 00f6 3A1C mov r2, r7 165 00f8 103A sub r2, r2, #16 166 00fa 3B1C mov r3, r7 167 00fc 083B sub r3, r3, #8 168 00fe 1B68 ldr r3, [r3] 169 0100 013B sub r3, r3, #1 170 0102 1360 str r3, [r2] 171 0104 1CE0 b .L8 172 .L9: 25:utils.c **** r[j] = s[i];
173 .loc 1 25 0 174 0106 3B1C mov r3, r7 175 0108 0C3B sub r3, r3, #12 176 010a 1B68 ldr r3, [r3] 177 010c 1A1C mov r2, r3 178 010e 3B1C mov r3, r7 179 0110 243B sub r3, r3, #36 180 0112 1B68 ldr r3, [r3] 181 0114 D118 add r1, r2, r3 182 0116 3B1C mov r3, r7 183 0118 103B sub r3, r3, #16 184 011a 1A68 ldr r2, [r3] 185 011c 3B1C mov r3, r7 186 011e 1A3B sub r3, r3, #26 187 0120 9B5C ldrb r3, [r3, r2] 188 0122 0B70 strb r3, [r1] 26:utils.c **** j++;
189 .loc 1 26 0 190 0124 3A1C mov r2, r7 191 0126 0C3A sub r2, r2, #12 192 0128 3B1C mov r3, r7 193 012a 0C3B sub r3, r3, #12 194 012c 1B68 ldr r3, [r3] 195 012e 0133 add r3, r3, #1 196 0130 1360 str r3, [r2] 197 .loc 1 24 0 198 0132 3A1C mov r2, r7 199 0134 103A sub r2, r2, #16 200 0136 3B1C mov r3, r7 201 0138 103B sub r3, r3, #16 202 013a 1B68 ldr r3, [r3] 203 013c 013B sub r3, r3, #1 204 013e 1360 str r3, [r2] 205 .L8: 206 0140 3B1C mov r3, r7 207 0142 103B sub r3, r3, #16 208 0144 1B68 ldr r3, [r3] 209 0146 002B cmp r3, #0 210 0148 DDDA bge .L9 27:utils.c **** }
28:utils.c **** return;
29:utils.c **** }
211 .loc 1 29 0 212 014a BD46 mov sp, r7 213 @ sp needed for prologue 214 014c 90BC pop {r4, r7} 215 014e 01BC pop {r0} 216 0150 0047 bx r0 217 .LFE290: 219 0152 0000 .align 2 220 .global delay 221 .code 16 222 .thumb_func 224 delay: 225 .LFB291: 30:utils.c ****
31:utils.c **** void delay(unsigned long ms) {
226 .loc 1 31 0 227 0154 80B5 push {r7, lr} 228 .LCFI3: 229 0156 6F46 mov r7, sp 230 .LCFI4: 231 0158 82B0 sub sp, sp, #8 232 .LCFI5: 233 015a 3B1C mov r3, r7 234 015c 083B sub r3, r3, #8 235 015e 1860 str r0, [r3] 32:utils.c **** unsigned long j;
33:utils.c ****
34:utils.c **** for (j = 2825*ms; j != 0; j-- );
236 .loc 1 34 0 237 0160 391F sub r1, r7, #4 238 0162 3B1C mov r3, r7 239 0164 083B sub r3, r3, #8 240 0166 1A68 ldr r2, [r3] 241 0168 084B ldr r3, .L17 242 016a 5343 mul r3, r3, r2 243 016c 0B60 str r3, [r1] 244 016e 04E0 b .L13 245 .L14: 246 0170 3A1F sub r2, r7, #4 247 0172 3B1F sub r3, r7, #4 248 0174 1B68 ldr r3, [r3] 249 0176 013B sub r3, r3, #1 250 0178 1360 str r3, [r2] 251 .L13: 252 017a 3B1F sub r3, r7, #4 253 017c 1B68 ldr r3, [r3] 254 017e 002B cmp r3, #0 255 0180 F6D1 bne .L14 35:utils.c **** };
256 .loc 1 35 0 257 0182 BD46 mov sp, r7 258 @ sp needed for prologue 259 0184 80BC pop {r7} 260 0186 01BC pop {r0} 261 0188 0047 bx r0 262 .L18: 263 018a 0000 .align 2 264 .L17: 265 018c 090B0000 .word 2825 266 .LFE291: 268 .global __udivsi3 269 .align 2 270 .global undelay 271 .code 16 272 .thumb_func 274 undelay: 275 .LFB292: 36:utils.c ****
37:utils.c **** void undelay(unsigned long un) {
276 .loc 1 37 0 277 0190 90B5 push {r4, r7, lr} 278 .LCFI6: 279 0192 6F46 mov r7, sp 280 .LCFI7: 281 0194 82B0 sub sp, sp, #8 282 .LCFI8: 283 0196 3B1C mov r3, r7 284 0198 083B sub r3, r3, #8 285 019a 1860 str r0, [r3] 38:utils.c **** unsigned long j;
39:utils.c ****
40:utils.c **** for (j = 2825*un/1000; j != 0; j-- );
286 .loc 1 40 0 287 019c 3B1C mov r3, r7 288 019e 083B sub r3, r3, #8 289 01a0 1A68 ldr r2, [r3] 290 01a2 0C4B ldr r3, .L24 291 01a4 5343 mul r3, r3, r2 292 01a6 3C1F sub r4, r7, #4 293 01a8 181C mov r0, r3 294 01aa FA21 mov r1, #250 295 01ac 8900 lsl r1, r1, #2 296 01ae FFF7FEFF bl __udivsi3 297 01b2 031C mov r3, r0 298 01b4 2360 str r3, [r4] 299 01b6 04E0 b .L20 300 .L21: 301 01b8 3A1F sub r2, r7, #4 302 01ba 3B1F sub r3, r7, #4 303 01bc 1B68 ldr r3, [r3] 304 01be 013B sub r3, r3, #1 305 01c0 1360 str r3, [r2] 306 .L20: 307 01c2 3B1F sub r3, r7, #4 308 01c4 1B68 ldr r3, [r3] 309 01c6 002B cmp r3, #0 310 01c8 F6D1 bne .L21 41:utils.c **** };
311 .loc 1 41 0 312 01ca BD46 mov sp, r7 313 @ sp needed for prologue 314 01cc 90BC pop {r4, r7} 315 01ce 01BC pop {r0} 316 01d0 0047 bx r0 317 .L25: 318 01d2 0000 .align 2 319 .L24: 320 01d4 090B0000 .word 2825 321 .LFE292: 403 .Letext0:DEFINED SYMBOLS *ABS*:00000000 utils.c/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccktjM1q.s:1 .text:00000000 $t/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccktjM1q.s:18 .text:00000000 ITOA/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccktjM1q.s:224 .text:00000154 delay/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccktjM1q.s:265 .text:0000018c $d/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccktjM1q.s:274 .text:00000190 undelay/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccktjM1q.s:271 .text:00000190 $t/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccktjM1q.s:320 .text:000001d4 $dUNDEFINED SYMBOLS__modsi3__divsi3__udivsi3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -