📄 tdes_fips81.lst
字号:
\ 00000072 3021 MOV R1,#+0x30
\ 00000074 6143 MUL R1,R4
\ 00000076 2B1C MOV R3,R5
\ 00000078 2033 ADD R3,#+0x20
\ 0000007A 5B58 LDR R3,[R3, R1]
\ 0000007C 9842 CMP R0,R3
\ 0000007E 03D1 BNE ??AT91F_TDES_Manual_Auto_Mode_4
\ 00000080 6818 ADD R0,R5,R1
\ 00000082 406A LDR R0,[R0, #+0x24]
\ 00000084 8242 CMP R2,R0
\ 00000086 00D0 BEQ ??AT91F_TDES_Manual_Auto_Mode_5
128 TRACE_ERROR("........ => FAILED\n\r");
\ ??AT91F_TDES_Manual_Auto_Mode_4:
\ 00000088 .... B ?Subroutine1
129 return FALSE;
130 }
131 }
\ ??AT91F_TDES_Manual_Auto_Mode_5:
\ 0000008A 761C ADD R6,R6,#+0x1
\ 0000008C 641C ADD R4,R4,#+0x1
\ 0000008E 3006 LSL R0,R6,#+0x18
\ 00000090 000E LSR R0,R0,#+0x18
\ 00000092 0328 CMP R0,#+0x3
\ 00000094 D5D3 BCC ??AT91F_TDES_Manual_Auto_Mode_1
132
133 TRACE_INFO("........ => OK\n\r");
\ 00000096 .... B ?Subroutine0
\ ??AT91F_TDES_Manual_Auto_Mode_3:
\ 00000098 5480FAFF DC32 0xfffa8054
134 return TRUE;
135 }
\ In segment CODE, align 4, keep-with-next
\ ?Subroutine1:
\ 00000000 E420 MOV R0,#+0xE4
\ 00000002 C000 LSL R0,R0,#+0x3 ;; #+0x720
\ 00000004 2918 ADD R1,R5,R0
\ 00000006 .... LDR R0,??DataTable28 ;; _Stdout
\ 00000008 ........ _BLF fprintf,fprintf??rT
\ 0000000C 0020 MOV R0,#+0
\ 0000000E F8BD POP {R3-R7,PC} ;; return
\ In segment CODE, align 4, keep-with-next
\ ?Subroutine0:
\ 00000000 E720 MOV R0,#+0xE7
\ 00000002 C000 LSL R0,R0,#+0x3 ;; #+0x738
\ 00000004 2918 ADD R1,R5,R0
\ 00000006 .... LDR R0,??DataTable28 ;; _Stdout
\ ??Subroutine0_0:
\ 00000008 ........ _BLF fprintf,fprintf??rT
\ 0000000C 0120 MOV R0,#+0x1
\ 0000000E F8BD POP {R3-R7,PC} ;; return
136
137 //*----------------------------------------------------------------------------
138 //* \fn AT91C_TDES_Manual_Auto_Mode_CFB8
139 //* \brief
140 //*----------------------------------------------------------------------------
\ In segment CODE, align 4, keep-with-next
141 unsigned int AT91C_TDES_Manual_Auto_Mode_CFB8(unsigned int startmode,unsigned int cipher,unsigned int index)
142 {
\ AT91C_TDES_Manual_Auto_Mode_CFB8:
\ 00000000 F1B5 PUSH {R0,R4-R7,LR}
\ 00000002 141C MOV R4,R2
\ 00000004 .... LDR R0,??DataTable18 ;; 0xfffa8000
\ 00000006 8022 MOV R2,#+0x80
\ 00000008 5200 LSL R2,R2,#+0x1 ;; #+0x100
\ 0000000A 0260 STR R2,[R0, #+0]
143 unsigned int out1;
144 unsigned char i;
145
146 AT91F_TDES_SoftReset(AT91C_BASE_TDES);
147 AT91F_TDES_CfgModeReg(AT91C_BASE_TDES,cipher|startmode|AT91C_TDES_OPMOD_CFB|AT91C_TDES_CFBS_8_BIT);
\ 0000000C .... LDR R0,??DataTable19 ;; 0xfffa8004
\ 0000000E 009A LDR R2,[SP, #+0]
\ 00000010 0A43 ORR R2,R1
\ 00000012 CC21 MOV R1,#+0xCC
\ 00000014 8902 LSL R1,R1,#+0xA ;; #+0x33000
\ 00000016 1143 ORR R1,R2
\ 00000018 0160 STR R1,[R0, #+0]
148
149 // Set Key
150 AT91F_TDES_SetKeys1(tdes_fips81,index);
\ 0000001A .... LDR R5,??DataTable24 ;; tdes_fips81
\ 0000001C 211C MOV R1,R4
\ 0000001E 281C MOV R0,R5
\ 00000020 ........ BL AT91F_TDES_SetKeys1
151 AT91F_TDES_SetKeys2(tdes_fips81,index);
\ 00000024 211C MOV R1,R4
\ 00000026 281C MOV R0,R5
\ 00000028 ........ BL AT91F_TDES_SetKeys2
152 AT91F_TDES_SetKeys3(tdes_fips81,index);
\ 0000002C 211C MOV R1,R4
\ 0000002E 281C MOV R0,R5
\ 00000030 ........ BL AT91F_TDES_SetKeys3
153
154 // Set Initialization Vector
155 AT91F_TDES_SetInitializationVectors(tdes_fips81,index);
\ 00000034 211C MOV R1,R4
\ 00000036 281C MOV R0,R5
\ 00000038 ........ BL AT91F_TDES_SetInitializationVectors
156
157 for(i=0;i<10;i++,index++) {
\ 0000003C 0020 MOV R0,#+0
\ 0000003E 0121 MOV R1,#+0x1
\ 00000040 .... LDR R2,??DataTable25 ;; test
158
159 // DATRDY flag already cleared (output data reg read before)
160 test = AT91C_TEST_NOK;
\ ??AT91C_TDES_Manual_Auto_Mode_CFB8_0:
\ 00000042 0023 MOV R3,#+0
\ 00000044 1370 STRB R3,[R2, #+0]
161 AT91F_TDES_EnableIt(AT91C_BASE_TDES,AT91C_TDES_DATRDY);
\ 00000046 .... LDR R3,??DataTable26 ;; 0xfffa8010
\ 00000048 1960 STR R1,[R3, #+0]
162
163 // 1 access required for CFB 8-,16-,32-bit to Start Processing (for AUTO Mode)
164 AT91F_TDES_InputData(AT91C_BASE_TDES,0,tdes_fips81[index][0+IN_OFFSET]);
\ 0000004A 3023 MOV R3,#+0x30
\ 0000004C 6343 MUL R3,R4
\ 0000004E .... LDR R6,??DataTable13 ;; 0xfffa8040
\ 00000050 2F1C MOV R7,R5
\ 00000052 1837 ADD R7,#+0x18
\ 00000054 FF58 LDR R7,[R7, R3]
\ 00000056 3760 STR R7,[R6, #+0]
165
166 // Start Processing (for MANUAL Mode)
167 if( !(startmode & AT91C_TDES_SMOD_AUTO) )
\ 00000058 009E LDR R6,[SP, #+0]
\ 0000005A 0F02 LSL R7,R1,#+0x8
\ 0000005C 3E42 TST R6,R7
\ 0000005E 01D1 BNE ??AT91C_TDES_Manual_Auto_Mode_CFB8_1
168 AT91F_TDES_StartProcessing(AT91C_BASE_TDES);
\ 00000060 .... LDR R6,??DataTable18 ;; 0xfffa8000
\ 00000062 3160 STR R1,[R6, #+0]
169
170 // Wait 4 end of processing
171 while(test != AT91C_TEST_OK);
\ ??AT91C_TDES_Manual_Auto_Mode_CFB8_1:
\ 00000064 1678 LDRB R6,[R2, #+0]
\ 00000066 012E CMP R6,#+0x1
\ 00000068 FCD1 BNE ??AT91C_TDES_Manual_Auto_Mode_CFB8_1
172
173 // Retrieve Output DATA => Reset DATRDY Status Flag
174 out1 = AT91F_TDES_GetOutputData(AT91C_BASE_TDES,0);
\ 0000006A .... LDR R6,??DataTable15 ;; 0xfffa8050
\ 0000006C 3668 LDR R6,[R6, #+0]
175
176 // Comparison Test
177 if( (out1 != tdes_fips81[index][0+OUT_OFFSET]) ) {
\ 0000006E 2F1C MOV R7,R5
\ 00000070 2037 ADD R7,#+0x20
\ 00000072 FB58 LDR R3,[R7, R3]
\ 00000074 9E42 CMP R6,R3
\ 00000076 00D0 BEQ ??AT91C_TDES_Manual_Auto_Mode_CFB8_2
178 TRACE_ERROR("........ => FAILED\n\r");
\ 00000078 .... B ?Subroutine1
179 return FALSE;
180 }
181 }
\ ??AT91C_TDES_Manual_Auto_Mode_CFB8_2:
\ 0000007A 401C ADD R0,R0,#+0x1
\ 0000007C 641C ADD R4,R4,#+0x1
\ 0000007E 0306 LSL R3,R0,#+0x18
\ 00000080 1B0E LSR R3,R3,#+0x18
\ 00000082 0A2B CMP R3,#+0xA
\ 00000084 DDD3 BCC ??AT91C_TDES_Manual_Auto_Mode_CFB8_0
182
183 TRACE_INFO("........ => OK\n\r");
\ 00000086 .... B ?Subroutine0
184 return TRUE;
185 }
186
187 //*----------------------------------------------------------------------------
188 //* \fn AT91F_TDES_PDC_Mode
189 //* \brief
190 //*----------------------------------------------------------------------------
\ In segment CODE, align 4, keep-with-next
191 unsigned int AT91F_TDES_PDC_Mode(unsigned int mode,unsigned int submode,unsigned int cipher,unsigned char index)
192 {
\ AT91F_TDES_PDC_Mode:
\ 00000000 F1B5 PUSH {R0,R4-R7,LR}
\ 00000002 061C MOV R6,R0
\ 00000004 0C1C MOV R4,R1
\ 00000006 1D1C MOV R5,R3
193 unsigned char i;
194
195 AT91F_TDES_SoftReset(AT91C_BASE_TDES);
\ 00000008 .... LDR R0,??DataTable18 ;; 0xfffa8000
\ 0000000A 8021 MOV R1,#+0x80
\ 0000000C 4900 LSL R1,R1,#+0x1 ;; #+0x100
\ 0000000E 0160 STR R1,[R0, #+0]
196 AT91F_TDES_CfgModeReg(AT91C_BASE_TDES,AT91C_TDES_SMOD_PDC|cipher|mode|submode);
\ 00000010 .... LDR R0,??DataTable19 ;; 0xfffa8004
\ 00000012 3243 ORR R2,R6
\ 00000014 2243 ORR R2,R4
\ 00000016 4900 LSL R1,R1,#+0x1
\ 00000018 1143 ORR R1,R2
\ 0000001A 0160 STR R1,[R0, #+0]
\ 0000001C 191C MOV R1,R3
\ 0000001E .... LDR R0,??DataTable24 ;; tdes_fips81
197
198 // Set Key
199 AT91F_TDES_SetKeys1(tdes_fips81,index);
\ 00000020 ........ BL AT91F_TDES_SetKeys1
200 AT91F_TDES_SetKeys2(tdes_fips81,index);
\ 00000024 291C MOV R1,R5
\ 00000026 .... LDR R0,??DataTable24 ;; tdes_fips81
\ 00000028 ........ BL AT91F_TDES_SetKeys2
201 AT91F_TDES_SetKeys3(tdes_fips81,index);
\ 0000002C 291C MOV R1,R5
\ 0000002E .... LDR R0,??DataTable24 ;; tdes_fips81
\ 00000030 ........ BL AT91F_TDES_SetKeys3
202
203 // Set Init Vector for Chained Modes
204 if(mode != AT91C_TDES_OPMOD_ECB)
\ 00000034 002E CMP R6,#+0
\ 00000036 03D0 BEQ ??AT91F_TDES_PDC_Mode_0
205 AT91F_TDES_SetInitializationVectors(tdes_fips81,index);
\ 00000038 291C MOV R1,R5
\ 0000003A .... LDR R0,??DataTable24 ;; tdes_fips81
\ 0000003C ........ BL AT91F_TDES_SetInitializationVectors
\ ??AT91F_TDES_PDC_Mode_0:
\ 00000040 0023 MOV R3,#+0
\ 00000042 3020 MOV R0,#+0x30
\ 00000044 4543 MUL R5,R0
\ 00000046 .... LDR R0,??DataTable24 ;; tdes_fips81
\ 00000048 4119 ADD R1,R0,R5
\ 0000004A 244A LDR R2,??AT91F_TDES_PDC_Mode_1 ;; TestBuf
206
207 for(i=0;i<0x2;i++)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -