📄 flop.lst
字号:
\ 00001C 0C5C RLA.W R12
\ 00001E 0C5C RLA.W R12
\ 000020 B012.... CALL #pvPortMalloc
\ 000024 0B4C MOV.W R12, R11
261
262 /* Keep filling an array, keeping a running total of the values placed in the
263 array. Then run through the array adding up all the values. If the two totals
264 do not match, stop the check variable from incrementing. */
265 for( ;; )
266 {
267 dTotal1 = 0.0;
\ ??vCompetingMathTask4_2:
\ 000026 81430000 MOV.W #0x0, 0x0(SP)
\ 00002A 81430200 MOV.W #0x0, 0x2(SP)
268 dTotal2 = 0.0;
\ 00002E 81430400 MOV.W #0x0, 0x4(SP)
\ 000032 81430600 MOV.W #0x0, 0x6(SP)
269
270 for( xPosition = 0; xPosition < xArraySize; xPosition++ )
\ 000036 0A43 MOV.W #0x0, R10
\ ??vCompetingMathTask4_0:
\ 000038 0A98 CMP.W R8, R10
\ 00003A 2A2C JC ??vCompetingMathTask4_3
271 {
272 pdArray[ xPosition ] = ( portDOUBLE ) xPosition * 12.123;
\ 00003C 0C4A MOV.W R10, R12
\ 00003E 0D43 MOV.W #0x0, R13
\ 000040 B012.... CALL #_Cast32uto32f
\ 000044 3E40CFF7 MOV.W #0xf7cf, R14
\ 000048 3F404141 MOV.W #0x4141, R15
\ 00004C B012.... CALL #_Mul32f
\ 000050 0E4A MOV.W R10, R14
\ 000052 0E5E RLA.W R14
\ 000054 0E5E RLA.W R14
\ 000056 0F4B MOV.W R11, R15
\ 000058 0F5E ADD.W R14, R15
\ 00005A 8F4C0000 MOV.W R12, 0(R15)
\ 00005E 8F4D0200 MOV.W R13, 0x2(R15)
273 dTotal1 += ( portDOUBLE ) xPosition * 12.123;
\ 000062 0C4A MOV.W R10, R12
\ 000064 0D43 MOV.W #0x0, R13
\ 000066 B012.... CALL #_Cast32uto32f
\ 00006A 3E40CFF7 MOV.W #0xf7cf, R14
\ 00006E 3F404141 MOV.W #0x4141, R15
\ 000072 B012.... CALL #_Mul32f
\ 000076 0E4C MOV.W R12, R14
\ 000078 0F4D MOV.W R13, R15
\ 00007A 2C41 MOV.W 0x0(SP), R12
\ 00007C 1D410200 MOV.W 0x2(SP), R13
\ 000080 B012.... CALL #_Add32f
\ 000084 814C0000 MOV.W R12, 0x0(SP)
\ 000088 814D0200 MOV.W R13, 0x2(SP)
274 }
\ 00008C 1A53 ADD.W #0x1, R10
\ 00008E D43F JMP ??vCompetingMathTask4_0
275
276 #if configUSE_PREEMPTION == 0
277 taskYIELD();
278 #endif
279
280 for( xPosition = 0; xPosition < xArraySize; xPosition++ )
\ ??vCompetingMathTask4_3:
\ 000090 0A43 MOV.W #0x0, R10
\ ??vCompetingMathTask4_1:
\ 000092 0A98 CMP.W R8, R10
\ 000094 142C JC ??vCompetingMathTask4_4
281 {
282 dTotal2 += pdArray[ xPosition ];
^
Warning[Pa082]: undefined behavior: the order of volatile accesses is
undefined in this statement
\ 000096 0E4A MOV.W R10, R14
\ 000098 0E5E RLA.W R14
\ 00009A 0E5E RLA.W R14
\ 00009C 0F4B MOV.W R11, R15
\ 00009E 0F5E ADD.W R14, R15
\ 0000A0 2E4F MOV.W @R15, R14
\ 0000A2 1F4F0200 MOV.W 0x2(R15), R15
\ 0000A6 1C410400 MOV.W 0x4(SP), R12
\ 0000AA 1D410600 MOV.W 0x6(SP), R13
\ 0000AE B012.... CALL #_Add32f
\ 0000B2 814C0400 MOV.W R12, 0x4(SP)
\ 0000B6 814D0600 MOV.W R13, 0x6(SP)
283 }
\ 0000BA 1A53 ADD.W #0x1, R10
\ 0000BC EA3F JMP ??vCompetingMathTask4_1
284
285 dDifference = dTotal1 - dTotal2;
^
Warning[Pa082]: undefined behavior: the order of volatile accesses is
undefined in this statement
\ ??vCompetingMathTask4_4:
\ 0000BE 1E410400 MOV.W 0x4(SP), R14
\ 0000C2 1F410600 MOV.W 0x6(SP), R15
\ 0000C6 2C41 MOV.W 0x0(SP), R12
\ 0000C8 1D410200 MOV.W 0x2(SP), R13
\ 0000CC B012.... CALL #_Sub32f
\ 0000D0 814C0800 MOV.W R12, 0x8(SP)
\ 0000D4 814D0A00 MOV.W R13, 0xa(SP)
286 if( fabs( dDifference ) > 0.001 )
\ 0000D8 1C410800 MOV.W 0x8(SP), R12
\ 0000DC 1D410A00 MOV.W 0xa(SP), R13
\ 0000E0 B012.... CALL #fabs
\ 0000E4 3E407012 MOV.W #0x1270, R14
\ 0000E8 3F40833A MOV.W #0x3a83, R15
\ 0000EC B012.... CALL #_CmpGe32f
\ 0000F0 0C93 CMP.W #0x0, R12
\ 0000F2 0124 JEQ ??vCompetingMathTask4_5
287 {
288 sError = pdTRUE;
\ 0000F4 1943 MOV.W #0x1, R9
289 }
290
291 #if configUSE_PREEMPTION == 0
292 taskYIELD();
293 #endif
294
295 if( sError == pdFALSE )
\ ??vCompetingMathTask4_5:
\ 0000F6 0993 CMP.W #0x0, R9
\ 0000F8 9623 JNE ??vCompetingMathTask4_2
296 {
297 /* If the calculation has always been correct, increment the check
298 variable so we know this task is still running okay. */
299 ( *pusTaskCheckVariable )++;
\ 0000FA 0F46 MOV.W R6, R15
\ 0000FC 9F530000 ADD.W #0x1, 0(R15)
\ 000100 923F JMP ??vCompetingMathTask4_2
300 }
301 }
302 }
303 /*-----------------------------------------------------------*/
304
305 /* This is called to check that all the created tasks are still running. */
\ In segment CODE, align 2
306 portBASE_TYPE xAreMathsTaskStillRunning( void )
\ xAreMathsTaskStillRunning:
307 {
\ 000000 0A12 PUSH.W R10
308 /* Keep a history of the check variables so we know if they have been incremented
309 since the last call. */
310 static unsigned portSHORT usLastTaskCheck[ mathNUMBER_OF_TASKS ] = { ( unsigned portSHORT ) 0 };
311 portBASE_TYPE xReturn = pdTRUE, xTask;
\ 000002 1C43 MOV.W #0x1, R12
312
313 /* Check the maths tasks are still running by ensuring their check variables
314 are still incrementing. */
315 for( xTask = 0; xTask < mathNUMBER_OF_TASKS; xTask++ )
\ 000004 0E43 MOV.W #0x0, R14
\ ??xAreMathsTaskStillRunning_0:
\ 000006 3E92 CMP.W #0x8, R14
\ 000008 1234 JGE ??xAreMathsTaskStillRunning_1
316 {
317 if( usTaskCheck[ xTask ] == usLastTaskCheck[ xTask ] )
\ 00000A 0D4E MOV.W R14, R13
\ 00000C 0D5D RLA.W R13
\ 00000E 0F4E MOV.W R14, R15
\ 000010 0F5F RLA.W R15
\ 000012 9D9F........ CMP.W ??usLastTaskCheck(R15), usTaskCheck(R13)
\ 000018 0120 JNE ??xAreMathsTaskStillRunning_2
318 {
319 /* The check has not incremented so an error exists. */
320 xReturn = pdFALSE;
\ 00001A 0C43 MOV.W #0x0, R12
321 }
322
323 usLastTaskCheck[ xTask ] = usTaskCheck[ xTask ];
\ ??xAreMathsTaskStillRunning_2:
\ 00001C 0D4E MOV.W R14, R13
\ 00001E 0D5D RLA.W R13
\ 000020 0F4E MOV.W R14, R15
\ 000022 0F5F RLA.W R15
\ 000024 9F4D........ MOV.W usTaskCheck(R13), ??usLastTaskCheck(R15)
324 }
\ 00002A 1E53 ADD.W #0x1, R14
\ 00002C EC3F JMP ??xAreMathsTaskStillRunning_0
325
326 return xReturn;
\ ??xAreMathsTaskStillRunning_1:
\ 00002E 3A41 POP.W R10
\ 000030 3041 RET
327 }
\ In segment DATA16_Z, align 2, align-sorted
\ 000000 REQUIRE ?cstart_init_zero
\ ??usLastTaskCheck:
\ 000000 DS8 16
\ In segment DATA16_C, align 1, align-sorted
\ `?<Constant "Math1">`:
\ 000000 4D6174683100 DC8 "Math1"
\ In segment DATA16_C, align 1, align-sorted
\ `?<Constant "Math2">`:
\ 000000 4D6174683200 DC8 "Math2"
\ In segment DATA16_C, align 1, align-sorted
\ `?<Constant "Math3">`:
\ 000000 4D6174683300 DC8 "Math3"
\ In segment DATA16_C, align 1, align-sorted
\ `?<Constant "Math4">`:
\ 000000 4D6174683400 DC8 "Math4"
\ In segment DATA16_C, align 1, align-sorted
\ `?<Constant "Math5">`:
\ 000000 4D6174683500 DC8 "Math5"
\ In segment DATA16_C, align 1, align-sorted
\ `?<Constant "Math6">`:
\ 000000 4D6174683600 DC8 "Math6"
\ In segment DATA16_C, align 1, align-sorted
\ `?<Constant "Math7">`:
\ 000000 4D6174683700 DC8 "Math7"
\ In segment DATA16_C, align 1, align-sorted
\ `?<Constant "Math8">`:
\ 000000 4D6174683800 DC8 "Math8"
328
329
330
Maximum stack usage in bytes:
Function CSTACK
-------- ------
vCompetingMathTask1 28
-> _Add32f 28
-> _Mul32f 28
-> _Add32f 28
-> _Mul32f 28
-> _Sub32f 28
-> fabs 28
-> _CmpGe32f 28
vCompetingMathTask2 28
-> _Div32f 28
-> _Mul32f 28
-> _Div32f 28
-> _Mul32f 28
-> _Sub32f 28
-> fabs 28
-> _CmpGe32f 28
vCompetingMathTask3 26
-> pvPortMalloc 26
-> _Cast32uto32f 26
-> _Add32f 26
-> _Cast32uto32f 26
-> _Add32f 26
-> _Add32f 26
-> _Add32f 26
-> _Sub32f 26
-> fabs 26
-> _CmpGe32f 26
vCompetingMathTask4 26
-> pvPortMalloc 26
-> _Cast32uto32f 26
-> _Mul32f 26
-> _Cast32uto32f 26
-> _Mul32f 26
-> _Add32f 26
-> _Add32f 26
-> _Sub32f 26
-> fabs 26
-> _CmpGe32f 26
vStartMathTasks 68
-> xTaskCreate 12
-> xTaskCreate 20
-> xTaskCreate 28
-> xTaskCreate 36
-> xTaskCreate 44
-> xTaskCreate 52
-> xTaskCreate 60
-> xTaskCreate 68
xAreMathsTaskStillRunning 4
Segment part sizes:
Function/Label Bytes
-------------- -----
usTaskCheck 16
vStartMathTasks 204
vCompetingMathTask1 218
vCompetingMathTask2 218
vCompetingMathTask3 254
vCompetingMathTask4 258
xAreMathsTaskStillRunning 50
usLastTaskCheck 16
?<Constant "Math1"> 6
?<Constant "Math2"> 6
?<Constant "Math3"> 6
?<Constant "Math4"> 6
?<Constant "Math5"> 6
?<Constant "Math6"> 6
?<Constant "Math7"> 6
?<Constant "Math8"> 6
1 202 bytes in segment CODE
48 bytes in segment DATA16_C
32 bytes in segment DATA16_Z
1 202 bytes of CODE memory
48 bytes of CONST memory
32 bytes of DATA memory
Errors: none
Warnings: 10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -