📄 flop.s43
字号:
MOV.W #0x42f6, 0x2(SP)
// 94 d2 = 2345.6789;
MOV.W #0x9add, 0x4(SP)
MOV.W #0x4512, 0x6(SP)
// 95 d3 = -918.222;
MOV.W #0x8e35, 0x8(SP)
MOV.W #0xc465, 0xa(SP)
// 96
// 97 dAnswer = ( d1 + d2 ) * d3;
MOV.W 0x4(SP), R14
MOV.W 0x6(SP), R15
MOV.W 0x0(SP), R12
MOV.W 0x2(SP), R13
CALL #_Add32f
MOV.W 0x8(SP), R14
MOV.W 0xa(SP), R15
CALL #_Mul32f
MOV.W R12, 0x10(SP)
MOV.W R13, 0x12(SP)
// 98
// 99 /* The variable this task increments to show it is still running is passed in
// 100 as the parameter. */
// 101 pusTaskCheckVariable = ( unsigned portSHORT * ) pvParameters;
MOV.W R10, R11
// 102
// 103 /* Keep performing a calculation and checking the result against a constant. */
// 104 for(;;)
// 105 {
// 106 d1 = 123.4567;
??vCompetingMathTask1_0:
MOV.W #0xe9d5, 0x0(SP)
MOV.W #0x42f6, 0x2(SP)
// 107 d2 = 2345.6789;
MOV.W #0x9add, 0x4(SP)
MOV.W #0x4512, 0x6(SP)
// 108 d3 = -918.222;
MOV.W #0x8e35, 0x8(SP)
MOV.W #0xc465, 0xa(SP)
// 109
// 110 d4 = ( d1 + d2 ) * d3;
MOV.W 0x4(SP), R14
MOV.W 0x6(SP), R15
MOV.W 0x0(SP), R12
MOV.W 0x2(SP), R13
CALL #_Add32f
MOV.W 0x8(SP), R14
MOV.W 0xa(SP), R15
CALL #_Mul32f
MOV.W R12, 0xc(SP)
MOV.W R13, 0xe(SP)
// 111
// 112 #if configUSE_PREEMPTION == 0
// 113 taskYIELD();
// 114 #endif
// 115
// 116 /* If the calculation does not match the expected constant, stop the
// 117 increment of the check variable. */
// 118 if( fabs( d4 - dAnswer ) > 0.001 )
MOV.W 0x10(SP), R14
MOV.W 0x12(SP), R15
MOV.W 0xc(SP), R12
MOV.W 0xe(SP), R13
CALL #_Sub32f
CALL #fabs
MOV.W #0x1270, R14
MOV.W #0x3a83, R15
CALL #_CmpGe32f
CMP.W #0x0, R12
JEQ ??vCompetingMathTask1_1
// 119 {
// 120 sError = pdTRUE;
MOV.W #0x1, R8
// 121 }
// 122
// 123 if( sError == pdFALSE )
??vCompetingMathTask1_1:
CMP.W #0x0, R8
JNE ??vCompetingMathTask1_0
// 124 {
// 125 /* If the calculation has always been correct, increment the check
// 126 variable so we know this task is still running okay. */
// 127 ( *pusTaskCheckVariable )++;
MOV.W R11, R15
ADD.W #0x1, 0(R15)
JMP ??vCompetingMathTask1_0
CFI EndBlock cfiBlock1
// 128 }
// 129
// 130 #if configUSE_PREEMPTION == 0
// 131 taskYIELD();
// 132 #endif
// 133
// 134 }
// 135 }
// 136 /*-----------------------------------------------------------*/
// 137
RSEG CODE:CODE:REORDER:NOROOT(1)
// 138 static portTASK_FUNCTION( vCompetingMathTask2, pvParameters )
vCompetingMathTask2:
CFI Block cfiBlock2 Using cfiCommon0
CFI Function vCompetingMathTask2
// 139 {
FUNCALL vCompetingMathTask2, _Div32f
LOCFRAME CSTACK, 28, STACK
FUNCALL vCompetingMathTask2, _Mul32f
LOCFRAME CSTACK, 28, STACK
FUNCALL vCompetingMathTask2, _Div32f
LOCFRAME CSTACK, 28, STACK
FUNCALL vCompetingMathTask2, _Mul32f
LOCFRAME CSTACK, 28, STACK
FUNCALL vCompetingMathTask2, _Sub32f
LOCFRAME CSTACK, 28, STACK
FUNCALL vCompetingMathTask2, fabs
LOCFRAME CSTACK, 28, STACK
FUNCALL vCompetingMathTask2, _CmpGe32f
LOCFRAME CSTACK, 28, STACK
PUSH.W R10
CFI R10 Frame(CFA, -4)
CFI CFA SP+4
PUSH.W R11
CFI R11 Frame(CFA, -6)
CFI CFA SP+6
PUSH.W R8
CFI R8 Frame(CFA, -8)
CFI CFA SP+8
SUB.W #0x14, SP
CFI CFA SP+28
MOV.W R12, R10
// 140 volatile portDOUBLE d1, d2, d3, d4;
// 141 volatile unsigned portSHORT *pusTaskCheckVariable;
// 142 volatile portDOUBLE dAnswer;
// 143 portSHORT sError = pdFALSE;
MOV.W #0x0, R8
// 144
// 145 d1 = -389.38;
MOV.W #0xb0a4, 0x0(SP)
MOV.W #0xc3c2, 0x2(SP)
// 146 d2 = 32498.2;
MOV.W #0xe466, 0x4(SP)
MOV.W #0x46fd, 0x6(SP)
// 147 d3 = -2.0001;
MOV.W #0x1a3, 0x8(SP)
MOV.W #0xc000, 0xa(SP)
// 148
// 149 dAnswer = ( d1 / d2 ) * d3;
MOV.W 0x4(SP), R14
MOV.W 0x6(SP), R15
MOV.W 0x0(SP), R12
MOV.W 0x2(SP), R13
CALL #_Div32f
MOV.W 0x8(SP), R14
MOV.W 0xa(SP), R15
CALL #_Mul32f
MOV.W R12, 0x10(SP)
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;
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:
MOV.W #0xb0a4, 0x0(SP)
MOV.W #0xc3c2, 0x2(SP)
// 160 d2 = 32498.2;
MOV.W #0xe466, 0x4(SP)
MOV.W #0x46fd, 0x6(SP)
// 161 d3 = -2.0001;
MOV.W #0x1a3, 0x8(SP)
MOV.W #0xc000, 0xa(SP)
// 162
// 163 d4 = ( d1 / d2 ) * d3;
MOV.W 0x4(SP), R14
MOV.W 0x6(SP), R15
MOV.W 0x0(SP), R12
MOV.W 0x2(SP), R13
CALL #_Div32f
MOV.W 0x8(SP), R14
MOV.W 0xa(SP), R15
CALL #_Mul32f
MOV.W R12, 0xc(SP)
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 )
MOV.W 0x10(SP), R14
MOV.W 0x12(SP), R15
MOV.W 0xc(SP), R12
MOV.W 0xe(SP), R13
CALL #_Sub32f
CALL #fabs
MOV.W #0x1270, R14
MOV.W #0x3a83, R15
CALL #_CmpGe32f
CMP.W #0x0, R12
JEQ ??vCompetingMathTask2_1
// 172 {
// 173 sError = pdTRUE;
MOV.W #0x1, R8
// 174 }
// 175
// 176 if( sError == pdFALSE )
??vCompetingMathTask2_1:
CMP.W #0x0, R8
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 )++;
MOV.W R11, R15
ADD.W #0x1, 0(R15)
JMP ??vCompetingMathTask2_0
CFI EndBlock cfiBlock2
// 182 }
// 183
// 184 #if configUSE_PREEMPTION == 0
// 185 taskYIELD();
// 186 #endif
// 187 }
// 188 }
// 189 /*-----------------------------------------------------------*/
// 190
RSEG CODE:CODE:REORDER:NOROOT(1)
// 191 static portTASK_FUNCTION( vCompetingMathTask3, pvParameters )
vCompetingMathTask3:
CFI Block cfiBlock3 Using cfiCommon0
CFI Function vCompetingMathTask3
// 192 {
FUNCALL vCompetingMathTask3, pvPortMalloc
LOCFRAME CSTACK, 26, STACK
FUNCALL vCompetingMathTask3, _Cast32uto32f
LOCFRAME CSTACK, 26, STACK
FUNCALL vCompetingMathTask3, _Add32f
LOCFRAME CSTACK, 26, STACK
FUNCALL vCompetingMathTask3, _Cast32uto32f
LOCFRAME CSTACK, 26, STACK
FUNCALL vCompetingMathTask3, _Add32f
LOCFRAME CSTACK, 26, STACK
FUNCALL vCompetingMathTask3, _Add32f
LOCFRAME CSTACK, 26, STACK
FUNCALL vCompetingMathTask3, _Add32f
LOCFRAME CSTACK, 26, STACK
FUNCALL vCompetingMathTask3, _Sub32f
LOCFRAME CSTACK, 26, STACK
FUNCALL vCompetingMathTask3, fabs
LOCFRAME CSTACK, 26, STACK
FUNCALL vCompetingMathTask3, _CmpGe32f
LOCFRAME CSTACK, 26, STACK
PUSH.W R10
CFI R10 Frame(CFA, -4)
CFI CFA SP+4
PUSH.W R11
CFI R11 Frame(CFA, -6)
CFI CFA SP+6
PUSH.W R8
CFI R8 Frame(CFA, -8)
CFI CFA SP+8
PUSH.W R9
CFI R9 Frame(CFA, -10)
CFI CFA SP+10
PUSH.W R6
CFI R6 Frame(CFA, -12)
CFI CFA SP+12
PUSH.W R7
CFI R7 Frame(CFA, -14)
CFI CFA SP+14
SUB.W #0xc, SP
CFI CFA SP+26
MOV.W R12, R7
// 193 volatile portDOUBLE *pdArray, dTotal1, dTotal2, dDifference;
// 194 volatile unsigned portSHORT *pusTaskCheckVariable;
// 195 const size_t xArraySize = 10;
MOV.W #0xa, R8
// 196 size_t xPosition;
// 197 portSHORT sError = pdFALSE;
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;
MOV.W R7, R6
// 202
// 203 pdArray = ( portDOUBLE * ) pvPortMalloc( xArraySize * sizeof( portDOUBLE ) );
MOV.W R8, R12
RLA.W R12
RLA.W R12
CALL #pvPortMalloc
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:
MOV.W #0x0, 0x0(SP)
MOV.W #0x0, 0x2(SP)
// 211 dTotal2 = 0.0;
MOV.W #0x0, 0x4(SP)
MOV.W #0x0, 0x6(SP)
// 212
// 213 for( xPosition = 0; xPosition < xArraySize; xPosition++ )
MOV.W #0x0, R10
??vCompetingMathTask3_0:
CMP.W R8, R10
JC ??vCompetingMathTask3_3
// 214 {
// 215 pdArray[ xPosition ] = ( portDOUBLE ) xPosition + 5.5;
MOV.W R10, R12
MOV.W #0x0, R13
CALL #_Cast32uto32f
MOV.W #0x0, R14
MOV.W #0x40b0, R15
CALL #_Add32f
MOV.W R10, R14
RLA.W R14
RLA.W R14
MOV.W R11, R15
ADD.W R14, R15
MOV.W R12, 0(R15)
MOV.W R13, 0x2(R15)
// 216 dTotal1 += ( portDOUBLE ) xPosition + 5.5;
MOV.W R10, R12
MOV.W #0x0, R13
CALL #_Cast32uto32f
MOV.W #0x0, R14
MOV.W #0x40b0, R15
CALL #_Add32f
MOV.W R12, R14
MOV.W R13, R15
MOV.W 0x0(SP), R12
MOV.W 0x2(SP), R13
CALL #_Add32f
MOV.W R12, 0x0(SP)
MOV.W R13, 0x2(SP)
// 217 }
ADD.W #0x1, R10
JMP ??vCompetingMathTask3_0
// 218
// 219 #if configUSE_PREEMPTION == 0
// 220 taskYIELD();
// 221 #endif
// 222
// 223 for( xPosition = 0; xPosition < xArraySize; xPosition++ )
??vCompetingMathTask3_3:
MOV.W #0x0, R10
??vCompetingMathTask3_1:
CMP.W R8, R10
JC ??vCompetingMathTask3_4
// 224 {
// 225 dTotal2 += pdArray[ xPosition ];
MOV.W R10, R14
RLA.W R14
RLA.W R14
MOV.W R11, R15
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -