⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flop.lst

📁 MSP430 IAR project with FreeRTOS port.
💻 LST
📖 第 1 页 / 共 3 页
字号:
    137          

   \                                 In segment CODE, align 2
    138          static portTASK_FUNCTION( vCompetingMathTask2, pvParameters )
   \                     vCompetingMathTask2:
    139          {
   \   000000   0A12         PUSH.W  R10
   \   000002   0B12         PUSH.W  R11
   \   000004   0812         PUSH.W  R8
   \   000006   31801400     SUB.W   #0x14, SP
   \   00000A   0A4C         MOV.W   R12, R10
    140          volatile portDOUBLE d1, d2, d3, d4;
    141          volatile unsigned portSHORT *pusTaskCheckVariable;
    142          volatile portDOUBLE dAnswer;
    143          portSHORT sError = pdFALSE;
   \   00000C   0843         MOV.W   #0x0, R8
    144          
    145          	d1 = -389.38;
   \   00000E   B140A4B00000 MOV.W   #0xb0a4, 0x0(SP)
   \   000014   B140C2C30200 MOV.W   #0xc3c2, 0x2(SP)
    146          	d2 = 32498.2;
   \   00001A   B14066E40400 MOV.W   #0xe466, 0x4(SP)
   \   000020   B140FD460600 MOV.W   #0x46fd, 0x6(SP)
    147          	d3 = -2.0001;
   \   000026   B140A3010800 MOV.W   #0x1a3, 0x8(SP)
   \   00002C   B14000C00A00 MOV.W   #0xc000, 0xa(SP)
    148          
    149          	dAnswer = ( d1 / d2 ) * d3;
                 	                          ^
Warning[Pa082]: undefined behavior: the order of volatile accesses is
          undefined in this statement
   \   000032   1E410400     MOV.W   0x4(SP), R14
   \   000036   1F410600     MOV.W   0x6(SP), R15
   \   00003A   2C41         MOV.W   0x0(SP), R12
   \   00003C   1D410200     MOV.W   0x2(SP), R13
   \   000040   B012....     CALL    #_Div32f
   \   000044   1E410800     MOV.W   0x8(SP), R14
   \   000048   1F410A00     MOV.W   0xa(SP), R15
   \   00004C   B012....     CALL    #_Mul32f
   \   000050   814C1000     MOV.W   R12, 0x10(SP)
   \   000054   814D1200     MOV.W   R13, 0x12(SP)
    150          
    151          
    152          	/* The variable this task increments to show it is still running is passed in 
    153          	as the parameter. */
    154          	pusTaskCheckVariable = ( unsigned portSHORT * ) pvParameters;
   \   000058   0B4A         MOV.W   R10, R11
    155          
    156          	/* Keep performing a calculation and checking the result against a constant. */
    157          	for( ;; )
    158          	{
    159          		d1 = -389.38;
   \                     ??vCompetingMathTask2_0:
   \   00005A   B140A4B00000 MOV.W   #0xb0a4, 0x0(SP)
   \   000060   B140C2C30200 MOV.W   #0xc3c2, 0x2(SP)
    160          		d2 = 32498.2;
   \   000066   B14066E40400 MOV.W   #0xe466, 0x4(SP)
   \   00006C   B140FD460600 MOV.W   #0x46fd, 0x6(SP)
    161          		d3 = -2.0001;
   \   000072   B140A3010800 MOV.W   #0x1a3, 0x8(SP)
   \   000078   B14000C00A00 MOV.W   #0xc000, 0xa(SP)
    162          
    163          		d4 = ( d1 / d2 ) * d3;
                 		                     ^
Warning[Pa082]: undefined behavior: the order of volatile accesses is
          undefined in this statement
   \   00007E   1E410400     MOV.W   0x4(SP), R14
   \   000082   1F410600     MOV.W   0x6(SP), R15
   \   000086   2C41         MOV.W   0x0(SP), R12
   \   000088   1D410200     MOV.W   0x2(SP), R13
   \   00008C   B012....     CALL    #_Div32f
   \   000090   1E410800     MOV.W   0x8(SP), R14
   \   000094   1F410A00     MOV.W   0xa(SP), R15
   \   000098   B012....     CALL    #_Mul32f
   \   00009C   814C0C00     MOV.W   R12, 0xc(SP)
   \   0000A0   814D0E00     MOV.W   R13, 0xe(SP)
    164          
    165          		#if configUSE_PREEMPTION == 0
    166          			taskYIELD();
    167          		#endif
    168          		
    169          		/* If the calculation does not match the expected constant, stop the 
    170          		increment of the check variable. */
    171          		if( fabs( d4 - dAnswer ) > 0.001 )
                 		                                 ^
Warning[Pa082]: undefined behavior: the order of volatile accesses is
          undefined in this statement
   \   0000A4   1E411000     MOV.W   0x10(SP), R14
   \   0000A8   1F411200     MOV.W   0x12(SP), R15
   \   0000AC   1C410C00     MOV.W   0xc(SP), R12
   \   0000B0   1D410E00     MOV.W   0xe(SP), R13
   \   0000B4   B012....     CALL    #_Sub32f
   \   0000B8   B012....     CALL    #fabs
   \   0000BC   3E407012     MOV.W   #0x1270, R14
   \   0000C0   3F40833A     MOV.W   #0x3a83, R15
   \   0000C4   B012....     CALL    #_CmpGe32f
   \   0000C8   0C93         CMP.W   #0x0, R12
   \   0000CA   0124         JEQ     ??vCompetingMathTask2_1
    172          		{
    173          			sError = pdTRUE;
   \   0000CC   1843         MOV.W   #0x1, R8
    174          		}
    175          
    176          		if( sError == pdFALSE )
   \                     ??vCompetingMathTask2_1:
   \   0000CE   0893         CMP.W   #0x0, R8
   \   0000D0   C423         JNE     ??vCompetingMathTask2_0
    177          		{
    178          			/* If the calculation has always been correct, increment the check 
    179          			variable so we know
    180          			this task is still running okay. */
    181          			( *pusTaskCheckVariable )++;
   \   0000D2   0F4B         MOV.W   R11, R15
   \   0000D4   9F530000     ADD.W   #0x1, 0(R15)
   \   0000D8   C03F         JMP     ??vCompetingMathTask2_0
    182          		}
    183          
    184          		#if configUSE_PREEMPTION == 0
    185          			taskYIELD();
    186          		#endif
    187          	}
    188          }
    189          /*-----------------------------------------------------------*/
    190          

   \                                 In segment CODE, align 2
    191          static portTASK_FUNCTION( vCompetingMathTask3, pvParameters )
   \                     vCompetingMathTask3:
    192          {
   \   000000   0A12         PUSH.W  R10
   \   000002   0B12         PUSH.W  R11
   \   000004   0812         PUSH.W  R8
   \   000006   0912         PUSH.W  R9
   \   000008   0612         PUSH.W  R6
   \   00000A   0712         PUSH.W  R7
   \   00000C   31800C00     SUB.W   #0xc, SP
   \   000010   074C         MOV.W   R12, R7
    193          volatile portDOUBLE *pdArray, dTotal1, dTotal2, dDifference;
    194          volatile unsigned portSHORT *pusTaskCheckVariable;
    195          const size_t xArraySize = 10;
   \   000012   38400A00     MOV.W   #0xa, R8
    196          size_t xPosition;
    197          portSHORT sError = pdFALSE;
   \   000016   0943         MOV.W   #0x0, R9
    198          
    199          	/* The variable this task increments to show it is still running is passed in 
    200          	as the parameter. */
    201          	pusTaskCheckVariable = ( unsigned portSHORT * ) pvParameters;
   \   000018   0647         MOV.W   R7, R6
    202          
    203          	pdArray = ( portDOUBLE * ) pvPortMalloc( xArraySize * sizeof( portDOUBLE ) );
   \   00001A   0C48         MOV.W   R8, R12
   \   00001C   0C5C         RLA.W   R12
   \   00001E   0C5C         RLA.W   R12
   \   000020   B012....     CALL    #pvPortMalloc
   \   000024   0B4C         MOV.W   R12, R11
    204          
    205          	/* Keep filling an array, keeping a running total of the values placed in the 
    206          	array.  Then run through the array adding up all the values.  If the two totals 
    207          	do not match, stop the check variable from incrementing. */
    208          	for( ;; )
    209          	{
    210          		dTotal1 = 0.0;
   \                     ??vCompetingMathTask3_2:
   \   000026   81430000     MOV.W   #0x0, 0x0(SP)
   \   00002A   81430200     MOV.W   #0x0, 0x2(SP)
    211          		dTotal2 = 0.0;
   \   00002E   81430400     MOV.W   #0x0, 0x4(SP)
   \   000032   81430600     MOV.W   #0x0, 0x6(SP)
    212          
    213          		for( xPosition = 0; xPosition < xArraySize; xPosition++ )
   \   000036   0A43         MOV.W   #0x0, R10
   \                     ??vCompetingMathTask3_0:
   \   000038   0A98         CMP.W   R8, R10
   \   00003A   282C         JC      ??vCompetingMathTask3_3
    214          		{
    215          			pdArray[ xPosition ] = ( portDOUBLE ) xPosition + 5.5;
   \   00003C   0C4A         MOV.W   R10, R12
   \   00003E   0D43         MOV.W   #0x0, R13
   \   000040   B012....     CALL    #_Cast32uto32f
   \   000044   0E43         MOV.W   #0x0, R14
   \   000046   3F40B040     MOV.W   #0x40b0, R15
   \   00004A   B012....     CALL    #_Add32f
   \   00004E   0E4A         MOV.W   R10, R14
   \   000050   0E5E         RLA.W   R14
   \   000052   0E5E         RLA.W   R14
   \   000054   0F4B         MOV.W   R11, R15
   \   000056   0F5E         ADD.W   R14, R15
   \   000058   8F4C0000     MOV.W   R12, 0(R15)
   \   00005C   8F4D0200     MOV.W   R13, 0x2(R15)
    216          			dTotal1 += ( portDOUBLE ) xPosition + 5.5;	
   \   000060   0C4A         MOV.W   R10, R12
   \   000062   0D43         MOV.W   #0x0, R13
   \   000064   B012....     CALL    #_Cast32uto32f
   \   000068   0E43         MOV.W   #0x0, R14
   \   00006A   3F40B040     MOV.W   #0x40b0, R15
   \   00006E   B012....     CALL    #_Add32f
   \   000072   0E4C         MOV.W   R12, R14
   \   000074   0F4D         MOV.W   R13, R15
   \   000076   2C41         MOV.W   0x0(SP), R12
   \   000078   1D410200     MOV.W   0x2(SP), R13
   \   00007C   B012....     CALL    #_Add32f
   \   000080   814C0000     MOV.W   R12, 0x0(SP)
   \   000084   814D0200     MOV.W   R13, 0x2(SP)
    217          		}
   \   000088   1A53         ADD.W   #0x1, R10
   \   00008A   D63F         JMP     ??vCompetingMathTask3_0
    218          
    219          		#if configUSE_PREEMPTION == 0
    220          			taskYIELD();
    221          		#endif
    222          
    223          		for( xPosition = 0; xPosition < xArraySize; xPosition++ )
   \                     ??vCompetingMathTask3_3:
   \   00008C   0A43         MOV.W   #0x0, R10
   \                     ??vCompetingMathTask3_1:
   \   00008E   0A98         CMP.W   R8, R10
   \   000090   142C         JC      ??vCompetingMathTask3_4
    224          		{
    225          			dTotal2 += pdArray[ xPosition ];
                 			                               ^
Warning[Pa082]: undefined behavior: the order of volatile accesses is
          undefined in this statement
   \   000092   0E4A         MOV.W   R10, R14
   \   000094   0E5E         RLA.W   R14
   \   000096   0E5E         RLA.W   R14
   \   000098   0F4B         MOV.W   R11, R15
   \   00009A   0F5E         ADD.W   R14, R15
   \   00009C   2E4F         MOV.W   @R15, R14
   \   00009E   1F4F0200     MOV.W   0x2(R15), R15
   \   0000A2   1C410400     MOV.W   0x4(SP), R12
   \   0000A6   1D410600     MOV.W   0x6(SP), R13
   \   0000AA   B012....     CALL    #_Add32f
   \   0000AE   814C0400     MOV.W   R12, 0x4(SP)
   \   0000B2   814D0600     MOV.W   R13, 0x6(SP)
    226          		}
   \   0000B6   1A53         ADD.W   #0x1, R10
   \   0000B8   EA3F         JMP     ??vCompetingMathTask3_1
    227          
    228          		dDifference = dTotal1 - dTotal2;
                 		                               ^
Warning[Pa082]: undefined behavior: the order of volatile accesses is
          undefined in this statement
   \                     ??vCompetingMathTask3_4:
   \   0000BA   1E410400     MOV.W   0x4(SP), R14
   \   0000BE   1F410600     MOV.W   0x6(SP), R15
   \   0000C2   2C41         MOV.W   0x0(SP), R12
   \   0000C4   1D410200     MOV.W   0x2(SP), R13
   \   0000C8   B012....     CALL    #_Sub32f
   \   0000CC   814C0800     MOV.W   R12, 0x8(SP)
   \   0000D0   814D0A00     MOV.W   R13, 0xa(SP)
    229          		if( fabs( dDifference ) > 0.001 )
   \   0000D4   1C410800     MOV.W   0x8(SP), R12
   \   0000D8   1D410A00     MOV.W   0xa(SP), R13
   \   0000DC   B012....     CALL    #fabs
   \   0000E0   3E407012     MOV.W   #0x1270, R14
   \   0000E4   3F40833A     MOV.W   #0x3a83, R15
   \   0000E8   B012....     CALL    #_CmpGe32f
   \   0000EC   0C93         CMP.W   #0x0, R12
   \   0000EE   0124         JEQ     ??vCompetingMathTask3_5
    230          		{
    231          			sError = pdTRUE;
   \   0000F0   1943         MOV.W   #0x1, R9
    232          		}
    233          
    234          		#if configUSE_PREEMPTION == 0
    235          			taskYIELD();
    236          		#endif
    237          
    238          		if( sError == pdFALSE )
   \                     ??vCompetingMathTask3_5:
   \   0000F2   0993         CMP.W   #0x0, R9
   \   0000F4   9823         JNE     ??vCompetingMathTask3_2
    239          		{
    240          			/* If the calculation has always been correct, increment the check 
    241          			variable so we know	this task is still running okay. */
    242          			( *pusTaskCheckVariable )++;
   \   0000F6   0F46         MOV.W   R6, R15
   \   0000F8   9F530000     ADD.W   #0x1, 0(R15)
   \   0000FC   943F         JMP     ??vCompetingMathTask3_2
    243          		}
    244          	}
    245          }
    246          /*-----------------------------------------------------------*/
    247          

   \                                 In segment CODE, align 2
    248          static portTASK_FUNCTION( vCompetingMathTask4, pvParameters )
   \                     vCompetingMathTask4:
    249          {
   \   000000   0A12         PUSH.W  R10
   \   000002   0B12         PUSH.W  R11
   \   000004   0812         PUSH.W  R8
   \   000006   0912         PUSH.W  R9
   \   000008   0612         PUSH.W  R6
   \   00000A   0712         PUSH.W  R7
   \   00000C   31800C00     SUB.W   #0xc, SP
   \   000010   074C         MOV.W   R12, R7
    250          volatile portDOUBLE *pdArray, dTotal1, dTotal2, dDifference;
    251          volatile unsigned portSHORT *pusTaskCheckVariable;
    252          const size_t xArraySize = 10;
   \   000012   38400A00     MOV.W   #0xa, R8
    253          size_t xPosition;
    254          portSHORT sError = pdFALSE;
   \   000016   0943         MOV.W   #0x0, R9
    255          
    256          	/* The variable this task increments to show it is still running is passed in 
    257          	as the parameter. */
    258          	pusTaskCheckVariable = ( unsigned portSHORT * ) pvParameters;
   \   000018   0647         MOV.W   R7, R6
    259          
    260          	pdArray = ( portDOUBLE * ) pvPortMalloc( xArraySize * sizeof( portDOUBLE ) );
   \   00001A   0C48         MOV.W   R8, R12

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -